Gson介绍和使用

一、什么是JSON

   JSON(JavaScript Object Notation)是JavaScript对象表示法,用于存储和交换文本信息的语法,类似XML,但比XML更小、更灵活。它是独立的语言,具有自我描述性,所以更易理解。
   JSON使用JavaScript语法来描述数据对象,但SJON仍然独立于语言平台。JSON解析器和JSON库支持许多不同的编程语言。

二、Gson

    java json对象的处理,目前有好一些类库,比较著名的有Jackson,Fastjson等,而Gson是google自己写的一个Java对象与JSON相互转化的工具包.它轻巧简便,易于使用,而且有很完备的文档可供查询,它是一个开源项目,其网址为 http://code.google.com/p/google-gson。
    这里介绍一下google封装的类库gson。
    gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要
    使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
    1)toJason()方法将对象转换成Json字符串
    2)fromJson()方法来实现从Json相关对象到java实体的方法。


三、导入Jar包

    1、下载gson-2.2.4.jar


四、示例代码

 Json_all.java

package json;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Json_all {
	/**
	 * Gson 谷歌的一个java 和 Json 解析器
	 * toJson()   : Java 转换成 Json
	 * fromJson() : Json 转换成 Java
	 */

	public static void main(String[] args) {

		Gson gson = new Gson();

		// 基本数据转换
		int[] numbers = { 1, 1, 2, 3, 5, 8, 13 };
		String[] days = { "Mon", "Tue", "Wed" };

		String numbersJson = gson.toJson(numbers);
		String daysJson = gson.toJson(days);

		int[] fibonacci = gson.fromJson(numbersJson, int[].class);
		String[] weekDays = gson.fromJson(daysJson, String[].class);

		// map <==> json
		Map<String, String> colours = new HashMap<String, String>();
		colours.put("black", "黑色");
		colours.put("red", "红色");
		colours.put("blue", "蓝色");

		String coloursJson = gson.toJson(colours); // 

		Type type = new TypeToken< Map<String, String> >() {}.getType(); // 申明类型 Map<String, String> 
		Map<String, String> map = gson.fromJson(coloursJson, type);

		// 单个对象 转换
		Student stu = new Student("leovany", "China", new Date(2000, 1, 1));

		String stuJson = gson.toJson(stu);
		Student student = gson.fromJson(stuJson, Student.class);

		// 对象集合 转换
		List<Student> students = new ArrayList<Student>();
		Student a = new Student("Alice", "Apple St", new Date(2014, 10, 1));
		Student b = new Student("Bob", "Banana St", null);
		students.add(a);
		students.add(b);

		String studentsJson = gson.toJson(students);

		Type type2 = new TypeToken<List<Student>>() {}.getType(); // 申明类型 List<Student>
		List<Student> studentList = gson.fromJson(studentsJson, type2);
	}

}

Student.java

package json;

import java.util.Date;

public class Student {

	private String name ;
	private String address;
	private Date dateOfBirth;
	
	public Student(String name, String address, Date dateOfBirth) {
        this.name = name;
        this.address = address;
        this.dateOfBirth = dateOfBirth;
    }
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}

	public Date getDateOfBirth() {
		return dateOfBirth;
	}

	public void setDateOfBirth(Date dateOfBirth) {
		this.dateOfBirth = dateOfBirth;
	}

}


参考:http://www.cnblogs.com/haippy/archive/2012/05/20/2509329.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值