gson:对象与json的转换
1、 使用Gson的toJson()方法将对象转换成Json字符串:
person.java
public class Person { private String name; private int age; 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; }
GsonTest.java
public class GsonTest { public static void main (String[] args){ Gson gson = new Gson(); List<Person> persons = new ArrayList<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); } }
输出结果:
{"age":25,"name":"王五"}
Person@4d3806b6
JSONArray转换成列表类型:
方法:Gson.fromJson(String json, Type typeOfT) throws JsonSyntaxException
JsonArrayTest.java
public class JsonArrayTest { public static void 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提供的数据类型转换器,可以支持各种数据集合类型转换。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。