fastjson、jackson、gson用法一览

fastjson、jackson、gson用法一览,第1张

文章目录
  • 1 准备
  • 2 序列化
    • 2.1 fastjson
    • 2.2 jackson
    • 2.3 json
  • 3. 反序列化
    • 3.1 字符串反序列为Json对象
      • 3.1.1 fastjson
      • 3.1.2 jackson
      • 3.1.2 gson
    • 3.2 字符串反序列为Java对象
      • 3.2.1 fastjson
      • 3.2.2 jackson
      • 3.2.3 gson
    • 3.3 字符串反序列化成json数组
      • 3.3.1 fastjson
      • 3.3.2 jackson
      • 3.3.3 gson
    • 3.4 字符串反序列化成List
      • 3.4.1 fastjson
      • 3.4.2 jackson
      • 3.4.3 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());

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/924631.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存