GSON
GSON 是Google的一个json解析框架,和传统的json解析相比,有着明显的优势。
关于基本的JSON解析,你可以看下面这篇文章
Android JSON的解析
API引入
本文使用的gson-2.3.1.jar
基本数据类型和json字符串的转换
通过toJson()将基本数据类型转换成json字符串
public class Main {
public static void main(String[] args) {
int[] A = new int[] { 1, 2, 3, 4, 5 };
String[] days = new String[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
Gson gson = new Gson();
String numsJson = gson.toJson(A);
System.out.println(numsJson);
// output : [1,2,3,4,5]
String daysJson = gson.toJson(days);
System.out.println(daysJson);
// output : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
}
}
// 二维数组转换成json
int[][] B = new int[][]{
{1,2,3},
{4,5,6},
{7,8,9}
};
System.out.println(gson.toJson(B));
//[[1,2,3],[4,5,6],[7,8,9]]
使用fromJson()将json字符串的数据成对象
// 第二个参数填对象类型
int[] arr = gson.fromJson(numsJson, int[].class);
java Bean 对象与json的转换
java Bean
class Person {
private String name;
private int age;
private String addr;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public Person(String name, int age, String addr) {
super();
this.name = name;
this.age = age;
this.addr = addr;
}
public Person() {
}
}
java Bean 转换成json
Person p = new Person("ytr", 21, "hebust");
String perJson = gson.toJson(p);
System.out.println(perJson);
// output {"name":"ytr","age":21,"addr":"hebust"}
json转换成javaBean
Person p2 = gson.fromJson(perJson, Person.class);
System.out.println(p2);
//output Person [name=ytr, age=21, addr=hebust]
集合与json的转换
list 数据
private static List<Person> list = new ArrayList<>();
// init data
static {
list.add(new Person("a1", 21, "hebust"));
list.add(new Person("b2", 22, "pku"));
list.add(new Person("c3", 23, "tsinghua"));
}
集合转换成json
String listJson = gson.toJson(list);
System.out.println(listJson);
// [{"name":"a1","age":21,"addr":"hebust"},{"name":"b2","age":22,"addr":"pku"},{"name":"c3","age":23,"addr":"tsinghua"}]
json 转换成集合
List<Person> persons = gson.fromJson(listJson, ArrayList.class);
System.out.println(persons);
//[{name=a1, age=21.0, addr=hebust}, {name=b2, age=22.0, addr=pku}, {name=c3, age=23.0, addr=tsinghua}]
GSON 对泛型的处理
List<Person> persons = gson.fromJson(listJson, new TypeToken<List<Person>>() {
}.getType());
使用typetoken,可以使编译器获取正确的类型