Gson是来自google的十分不错的json转换器,转换起来十分方便。Gson可以很轻松的实现javaBean和jsonString之间的互转.
下面是一个简单的例子:
package com.kelly.gson;
import java.util.Date;
public class Student {
private int id;
private String name;
private Date birthDay;
public Student() {
super();
}
public Student(int id, String name, Date birthDay) {
this.id = id;
this.name = name;
this.birthDay = birthDay;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
@Override
public String toString() {
return "Student [birthDay=" + birthDay + ", id=" + id + ", name="
+ name + "]";
}
}
实体很简单,三个字段,当然实体中的字段也可以是List或者Set类型的。
<span style="font-size:14px;">package com.kelly.gson;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class TestGson {
/**
* @param args
*/
public static void main(String[] args) {
Gson gson = new Gson();
Student student1 = new Student(1000, "了哦", new Date());
Student student2 = new Student(1001, "黎明", new Date());
Student student3 = new Student(1002, "陈小春", new Date());
// //////////////////////////////////////////////////////////
System.out.println("----------简单对象之间的转化-------------");
// 简单的bean转为json
String s1 = gson.toJson(student1);
System.out.println("简单Bean转化为Json===" + s1);
// json转为简单Bean
Student student = gson.fromJson(s1, Student.class);
System.out.println("Json转为简单Bean===" + student);
// ///////////////////////////////////
List<Student> list = new ArrayList<Student>();
list.add(student1);
list.add(student2);
list.add(student3);
System.out.println("----------带泛型的List之间的转化-------------");
// 带泛型的list转化为json
String s2 = gson.toJson(list);
System.out.println("带泛型的list转化为json==" + s2);
// json转为带泛型的list
List<Student> lists = gson.fromJson(s2, new TypeToken<List<Student>>() {
}.getType());
for (Student stu : lists) {
System.out.println(stu);
}
}
}
</span>
Gson对象,它提供了toJason()方法将对象转换成Json字符串
简单Bean转化为Json
结果:{"id":1000,"name":"了哦","birthDay":"Nov 23, 2014 6:13:43 PM"}
带泛型的list转化为json
结果:[{"id":1000,"name":"了哦","birthDay":"Nov
23, 2014 6:13:43 PM"},{"id":1001,"name":"黎明","birthDay":"Nov 23, 2014 6:13:43 PM"},{"id":1002,"name":"陈小春","birthDay":"Nov 23, 2014 6:13:43 PM"}]
来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
先来看第一种:
比如上述json字符串为:{"id":1000,"name":"了哦","birthDay":"Nov 23, 2014 6:13:43 PM"}
代码:
Student student = gson.fromJson(s1, Student.class);
Json转为简单Bean
结果:Student [birthDay=Sun Nov 23 18:13:43 CST 2014, id=1000, name=了哦]
第二种,转换成列表类型:
代码:
// json转为带泛型的list
List<Student> lists = gson.fromJson(s2, new TypeToken<List<Student>>() {
}.getType());
for (Student stu : lists) {
System.out.println(stu);
}
Student [birthDay=Sun Nov 23 18:13:43 CST 2014, id=1000, name=了哦]
Student [birthDay=Sun Nov 23 18:13:43 CST 2014, id=1001, name=黎明]
Student [birthDay=Sun Nov 23 18:13:43 CST 2014, id=1002, name=陈小春]
上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。推荐一个jsonString格式化在线工具.地址:http://www.sojson.com