fastjson、jackson、gson用法一览

1 准备

有如下类:

class Person {
    
    

    private String name;
    private int age;

    public Person() {
    
    }

    public Person(String name, int age) {
    
    
        this.name = name;
        this.age = 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;
    }
}

有如下对象:

Person person = new Person("张三", 23);
String personStr = "{\"age\":23,\"name\":\"张三\"}";
String personListStr = "[{\"age\":23,\"name\":\"张三\"}]";

2 序列化

2.1 fastjson

JSON.toJSONString(person);

美化json:

JSON.toJSONString(person, SerializerFeature.PrettyFormat);
// 或者
JSON.toJSONString(person, true);

2.2 jackson

objectMapper.writeValueAsString(person);

美化json:

objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);

2.3 json

Gson gson = new Gson();
gson.toJson(person);

美化json:

Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.toJson(person);

3. 反序列化

3.1 字符串反序列为Json对象

3.1.1 fastjson

JSONObject jsonObject = JSON.parseObject(personStr);
System.out.println(jsonObject.getString("name"));
System.out.println(jsonObject.getInteger("age"));

3.1.2 jackson

JsonNode node = objectMapper.readTree(personStr);
System.out.println(node.get("name").asText());
System.out.println(node.get("age").asInt());

3.1.2 gson

JsonObject gsonObject = new JsonParser().parse(personStr).getAsJsonObject();
System.out.println(gsonObject.get("name").getAsString());
System.out.println(gsonObject.get("age").getAsInt());

3.2 字符串反序列为Java对象

3.2.1 fastjson

Person person = JSON.parseObject(personStr, Person.class);

3.2.2 jackson

Person person = objectMapper.readValue(personStr, Person.class);

3.2.3 gson

Person person = new Gson().fromJson(personStr, Person.class);

3.3 字符串反序列化成json数组

3.3.1 fastjson

JSONArray jsonArray = JSON.parseArray(personListStr);

 // 遍历
for (Object item : jsonArray ) {
    
    
    JSONObject itemObject = (JSONObject) item;
    System.out.println(itemObject.getString("name"));
    System.out.println(itemObject.getInteger("age"));
}

3.3.2 jackson

JsonNode jsonNode = objectMapper.readTree(personListStr);
if (jsonNode.isArray()) {
    
    
    for (JsonNode item : jsonNode) {
    
    
        System.out.println(item.get("name").asText());
        System.out.println(item.get("age").asInt());
    }
}

3.3.3 gson

JsonArray jsonArray = new JsonParser().parse(personListStr).getAsJsonArray();
for (JsonElement jsonElement : jsonArray) {
    
    
    System.out.println(jsonElement.getAsJsonObject().get("name").getAsString());
    System.out.println(jsonElement.getAsJsonObject().get("age").getAsInt());
}

3.4 字符串反序列化成List

3.4.1 fastjson

List<Person> personList = JSON.parseArray(personListStr, Person.class);
List<Person> personList2 = JSON.parseObject(personListStr, new TypeReference<List<Person>>(){
    
    });

3.4.2 jackson

List<Person> personListByJackson = objectMapper.readValue(personListStr, new TypeReference<List<Person>>(){
    
    });

3.4.3 gson

List<Person> personListByGson = gson.fromJson(personListStr, new TypeToken<List<Person>>() {
    
    }.getType());

猜你喜欢

转载自blog.csdn.net/qq_23365135/article/details/124759509