Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
1.Gson解析json数据转化为List集合,具体代码如下:
package com.yoodb; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class Test { /** * @author www.yoodb.com * @param args */ public static void main(String[] args) { Gson gson = new Gson(); String json = "[{'id': 1,'name': '张三','city': '北京'}," + " {'id': 2,'name': '李四','map': '上海'}, " + "{'id': 3,'name': '王五','map': '广州'}, " + "{'id': 4,'name': '赵六','map': '深圳'}]"; List<User> list = new ArrayList<User>(); Type type = new TypeToken<ArrayList<User>>(){}.getType(); list = gson.fromJson(json, type); for(User user : list){ System.out.println(user.getName()); } } class User{ private Long id; private String name; private String city; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } } }
2.Gson解析json数据转化为Map集合,具体代码如下:
package com.yoodb; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.collections.map.HashedMap; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class Test { /** * @author www.yoodb.com * @param args */ public static void main(String[] args) { Gson gson = new Gson(); String json = "{'bj':{'id': 1,'name': '张三','city': '北京'}," + " 'sh':{'id': 2,'name': '李四','map': '上海'}, " + "'gz':{'id': 3,'name': '王五','map': '广州'}, " + "'sz':{'id': 4,'name': '赵六','map': '深圳'}}"; Map<String, User> user = gson.fromJson(json, new TypeToken<Map<String, User>>() {}.getType()); System.out.println(user.get("bj").getName()); } class User{ private Long id; private String name; private String city; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } } }
注意:json返回数据有时不清楚Map集合中包含哪些数据,具体处理代码如下:
package com.yoodb; import java.util.Map; import com.google.gson.Gson; public class Test { /** * @author www.yoodb.com * @param args */ public static void main(String[] args) { Gson gson = new Gson(); String json = "{'bj':{'id': 1,'name': '张三','city': '北京'}," + " 'sh':{'id': 2,'name': '李四','map': '上海'}, " + "'gz':{'id': 3,'name': '王五','map': '广州'}, " + "'sz':{'id': 4,'name': '赵六','map': '深圳'}}"; Map map = gson.fromJson(json, Map.class); map = (Map) map.get("bj"); System.out.println(map.get("city")); } }
调用http接口时用户返回数据,判断是否为json格式数据,参考地址:http://www.yoodb.com/toJson,校验以及格式化功能。