java利器F Json之Gson(一)

今天学习下java里,对json数据的处理,之前了解过,但是,sun公司之前的一个jar包好像对此确实支持的不够。经了解常用的有gson,jkson这2套技术。今天就抽空学习下gson.

前提环境:

       1.导入gson-2.2.2.jar;

       2.jdk1.6

       3.java bean:Address.java,Student.java

package com.wds.json;

import java.io.Serializable;

public class Address implements Serializable{
	private String country;
	private String province;
	private String city;
	private String area;
	private String street;
	private String no;
	
	public Address() {
		super();
	}
	public Address(String city, String area, String street, String no) {
		super();
		this.city = city;
		this.area = area;
		this.street = street;
		this.no = no;
	}
	public Address(String country, String province, String city, String area,
			String street, String no) {
		super();
		this.country = country;
		this.province = province;
		this.city = city;
		this.area = area;
		this.street = street;
		this.no = no;
	}
	//setter/getter
}

 Student.java

package com.wds.json;

import java.io.Serializable;
import java.util.Date;

public class Student implements Serializable{
	private int id;
	private double height;
	private String name;
	private Date birth;
	private boolean ismarried;
	private Address address;
	
	public Student() {
		super();
	}
	public Student(String name, Date birth, Address address) {
		super();
		this.name = name;
		this.birth = birth;
		this.address = address;
	}
	public Student(int id, double height, String name, Date birth,
			boolean ismarried, Address address) {
		super();
		this.id = id;
		this.height = height;
		this.name = name;
		this.birth = birth;
		this.ismarried = ismarried;
		this.address = address;
	}
	//setter/getter	
}

 

1.java对象到json字符串的转换:

 

		Address addr = new Address( "yinchuan", "jinfeng", "shengli", "1132");
		Gson gson = new Gson();  
		String json = gson.toJson(addr);
		System.out.println("addr = "+json);

 

2.json字符串到java对象:

 

		String json = "{\"city\":\"yinchuan\",\"area\":\"jinfeng\",\"street\":\"shengli\",\"no\":\"1132\"}";
		Gson gson = new Gson();
		Address addr = gson.fromJson(json, Address.class);
		System.out.println("addr = "+addr);
		System.out.println("addr = "+addr.getCity());
		System.out.println("addr = "+addr.getArea());
		System.out.println("addr = "+addr.getStreet());
		System.out.println("addr = "+addr.getNo());
		System.out.println("addr = "+addr.getCountry());

 

3.list到json:

 

		Gson gson = new Gson();  
		List li = new ArrayList();
		li.add("ab");
		li.add("bc");
		li.add("cd");
		li.add("de");
		String json = gson.toJson(li);
		System.out.println("li = "+json);

 

 4.泛型list到json:

 

		Gson gson = new Gson();
		List<Student> students = new ArrayList<Student>();
		students.add(new Student("zs",new Date(),new Address("yinchuan", "jinfeng", "shengli", "1132")));
		students.add(new Student("ww",new Date(),new Address("wuhan", "jinfeng", "shengli", "1132")));
		students.add(new Student("ll",new Date(),new Address("shanghai", "jinfeng", "shengli", "1132")));
		String json = gson.toJson(students);
		System.out.println("students = "+json);

 

 5.json list字符串转泛型list:

 

		List<Student> retList = gson.fromJson(json, new TypeToken<List<Student>>(){}.getType()); 
		for (Student stu : retList) {
			System.out.println(stu);
		}

下面小结一下:

其实我们的实现只依赖一个Gson对象:

 

Gson gson = new Gson();

 java数据对象转json字符串:

 

String json = gson.toJson(array);
String json = gson.toJson(obj);
String json = gson.toJson(set);
String json = gson.toJson(list);
String json = gson.toJson(map);

 

json字符串转java数据对象:

//json --> obj
Address addr = gson.fromJson(json, Address.class);
//json --> list
List<Student> retList = gson.fromJson(json, new TypeToken<List<Student>>(){}.getType()); 

 

在测试探究中:我还发现:如果有个json字符串的属性很多,但是,我们需要的属性只有若干的几个,那么我们可以根据需要进行实体bean的定义,这样我们也可以直接从json字符串提取出我们需要的实体bean。

就先这样,下一篇再深入了解其他的数据处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值