fastjson 是阿里的開源項目,具網上的說法 fastjson 的解析速度是 Gson 的6倍,體積小,並且開源。java
項目地址:git
https://github.com/alibaba/fastjsongithub
通常 json 解析器咱們都用到的是序列化和反序列化。json
下面舉個例子來看看 fastjson 的具體用法:api
public class User { private Long id; private String name; 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 class Group { private Long id; private String name; private List<User> users = new ArrayList<User>(); 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 List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } }
Group group = new Group(); group.setId(0L); group.setName("admin"); User guestUser = new User(); guestUser.setId(2L); guestUser.setName("guest"); User rootUser = new User(); rootUser.setId(3L); rootUser.setName("root"); group.getUsers().add(guestUser); group.getUsers().add(rootUser); String jsonString = JSON.toJSONString(group); System.out.println(jsonString);
上面的代碼輸入結果以下:this
{"id":0,"name":"admin","users":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]}
反序列化操做以下:code
Group group = JSON.parseObject(jsonString, Group.class);
有時候咱們發送一個 http 請求,獲得一個 json 字符串,咱們須要根據其中的某個字段來肯定反序列化的類型blog
例如:字符串
成功時的 json 字符串get
{ "api": "com.xx.get.userinfo", "v": "1.0", "result": { "code": 200, "message": "success" }, "data": { "age": 18, "name": "qingtianzhu", "girl_friends": [ "xiaoli", "fengjie", "lucy" ] } }
失敗時的 json 字符串
{ "api": "com.xx.get.userinfo", "v": "1.0", "result": { "code": 500, "message": "fail" }, "data": { "errorCode": 1, "detail": "qingtianzhu" } }
咱們先獲取 "result" 字段中的 message, 而後再肯定反序列化的類型:
// 獲取 String String version = JSON.parseObject(jsonStr).getString("v"); // 獲取 JsonObject JSONObject jo = JSON.parseObject(jsonStr).getJSONObject("result"); String msg = jo.getString("message");