您的位置:首页 > 其它

gson框架的使用

2016-05-27 16:04 281 查看

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,可以使编译器获取正确的类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: