GSON使用:
1、 使用Gson的toJson()方法将对象转换成Json字符串:
person.java:
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void set Name(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(intage) {
this.age = age;
}
}
GsonTest.java:
public class GsonTest {
public static void main (String[] args){
Gson gson = new Gson();
List<Person> persons = newArrayList<Person>();
Person p1 = new Person();
p1.setName("张三");
p1.setAge(23);
Person p2 = new Person();
p2.setName("李四");
p2.setAge(24);
persons.add(p1);
persons.add(p2);
System.out.println(persons);
String str = gson.toJson(persons); //对象转换为json
System.out.println(str);
}
}
输出得到:[Person@688fd95d, Person@3c079e4c]
[{"name":"张三","age":23},{"name":"李四","age":24}]
直接打印对象实际上打印的是Object的toString方法返回的字符串,该字符串由类名(对象是该类的一个实例)、标记符“@”和此对象哈希码的无符号十六进制表示组成。即:
getClass().getName()+ ‘@’ + Integer.toHexString(hashCode())
2、gson的反序列化:gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
方法:Gson.fromJson(String json, Class<Person>classOfT) throws JsonSyntaxException
代码: JsonTest.java
public class JsonTest {
public static void main(String[] args) throws JSONException{
JSONObject pJson = new JSONObject();
pJson.put("name", "王五");
pJson.put("age",25);
System.out.println(pJson);
Gson gson = new Gson();
Person p = gson.fromJson(pJson.toString(), Person.class);
System.out.println(p);
}
}
提供两个参数,分别是json字符串以及需要转换对象的类型。
输出结果:{"age":25,"name":"王五"}
Person@4d3806b6
第二种,JSONArray转换成列表类型:
方法:Gson.fromJson(String json, Type typeOfT)throws JsonSyntaxException
代码:JsonArrayTest.java
public class JsonArrayTest {
public staticvoid main(String[] args) throws JSONException{
JSONObject p01 = new JSONObject();
p01.put("name", "赵六");
p01.put("age", 26);
JSONObject p02 = new JSONObject();
p02.put("name", "秦七");
p02.put("age",27);
JSONArray ja = new JSONArray();
ja.put(p01);
ja.put(p02);
System.out.println(ja);
Gson gson = new Gson();
List<Person> ps = gson.fromJson(ja.toString(), new TypeToken<List<Person>>(){}.getType());
System.out.println(ps);
}
}
输出得到:
[{"age":26,"name":"赵六"},{"age":27,"name":"秦七"}]
[Person@2cf5ebcc, Person@454bb523]
TypeToken是gson提供的数据类型转换器,可以支持各种数据集合类型转换。