fastjson、jackson、gson用法一览

水深无声 2023-09-29 01:14 139阅读 0赞

文章目录

  • 1 准备
  • 2 序列化
    • 2.1 fastjson
    • 2.2 jackson
    • 2.3 json
    1. 反序列化
    • 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 准备

有如下类:

  1. class Person {
  2. private String name;
  3. private int age;
  4. public Person() {
  5. }
  6. public Person(String name, int age) {
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public int getAge() {
  17. return age;
  18. }
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22. }

有如下对象:

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

2 序列化

2.1 fastjson

  1. JSON.toJSONString(person);

美化json:

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

2.2 jackson

  1. objectMapper.writeValueAsString(person);

美化json:

  1. objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);

2.3 json

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

美化json:

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

3. 反序列化

3.1 字符串反序列为Json对象

3.1.1 fastjson

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

3.1.2 jackson

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

3.1.2 gson

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

3.2 字符串反序列为Java对象

3.2.1 fastjson

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

3.2.2 jackson

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

3.2.3 gson

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

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

3.3.1 fastjson

  1. JSONArray jsonArray = JSON.parseArray(personListStr);
  2. // 遍历
  3. for (Object item : jsonArray ) {
  4. JSONObject itemObject = (JSONObject) item;
  5. System.out.println(itemObject.getString("name"));
  6. System.out.println(itemObject.getInteger("age"));
  7. }

3.3.2 jackson

  1. JsonNode jsonNode = objectMapper.readTree(personListStr);
  2. if (jsonNode.isArray()) {
  3. for (JsonNode item : jsonNode) {
  4. System.out.println(item.get("name").asText());
  5. System.out.println(item.get("age").asInt());
  6. }
  7. }

3.3.3 gson

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

3.4 字符串反序列化成List

3.4.1 fastjson

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

3.4.2 jackson

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

3.4.3 gson

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

发表评论

表情:
评论列表 (有 0 条评论,139人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JDK 工具一览

    Java 坑如此大,需要慢慢填。 本文是列出JDK自带的一些工具,介于篇幅,简单列出工具列表及工具的作用。至少先做到知道有哪些工具,然后才能在实际中用到。 > 本文参考了[