fastjson 使用教程

fastjson 是阿里的開源項目,具網上的說法 fastjson 的解析速度是 Gson 的6倍,體積小,並且開源。java

項目地址:git

https://github.com/alibaba/fastjsongithub

 通常 json 解析器咱們都用到的是序列化和反序列化。json

  • JSON.toJSONString
  • parseObject。

下面舉個例子來看看 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");
相關文章
相關標籤/搜索