杰克逊将JSON转换为对象

亚马来烯

我一辈子都无法弄清楚如何使用杰克逊将该json文件解析为对象。

这是我的json文件:

  {
  "file": "phrases",
  "use": "quotes",
  "famous_phrases": [
      {
      "phrase1": "one for all",
      "phrase2": "all for one",
      "id": 1
      },
      {
      "phrase1": "four scores",
      "phrase2": "and seven years ago",
      "id": 17
      },
      {
      "phrase1": "elementary",
      "phrase2": "my dear watson",
      "id": 22
      }
  ]
  }

我尝试了这个:

BufferedReader fileReader = new BufferedReader(new FileReader("./test.json"));
ObjectMapper mapper = new ObjectMapper();
JsonNode quotes = mapper.readValue(fileReader, JsonNode.class);
quotes = quotes.get("famous_phrases");
TypeReference<List<Quotes>> phrases = new TypeReference<List<Quotes>>(){};
List<Quotes> q = mapper.readValue(quotes.traverse(), phrases);
for (Phrases element : q) {
    System.out.println(element.getPhrase1());
}

我制作了POJO,但我认为我可能做错了POJO。我定义了所有属性(文件,用法,famous_phrases),每个属性都有自己的set和get方法。任何帮助,将不胜感激!

托德

json文件:

{
    "file": "phrases",
    "use": "quotes",
    "famous_phrases": [
    {
        "phrase1": "one for all",
        "phrase2": "all for one",
        "id": 1
    },
    {
        "phrase1": "four scores",
        "phrase2": "and seven years ago",
        "id": 17
    },
    {
        "phrase1": "elementary",
        "phrase2": "my dear watson",
        "id": 22
    }
    ]
}

豆子:

public class Quotes {

    private String file;
    private String use;
    private List<Phrases> famous_phrases;

    public String getFile() {
        return file;
    }

    public void setFile(String file) {
        this.file = file;
    }

    public String getUse() {
        return use;
    }

    public void setUse(String use) {
        this.use = use;
    }

    public List<Phrases> getFamous_phrases() {
        return famous_phrases;
    }

    public void setFamous_phrases(List<Phrases> famous_phrases) {
        this.famous_phrases = famous_phrases;
    }

}

public class Phrases {

    private String phrase1;
    private String phrase2;
    private String id;

    public String getPhrase1() {
        return phrase1;
    }

    public void setPhrase1(String phrase1) {
        this.phrase1 = phrase1;
    }

    public String getPhrase2() {
        return phrase2;
    }

    public void setPhrase2(String phrase2) {
        this.phrase2 = phrase2;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

读取json文件:

BufferedReader fileReader = new BufferedReader(new FileReader("./test.json"));
ObjectMapper mapper = new ObjectMapper();
Quotes quotes = mapper.readValue(fileReader, Quotes.class);
for (Phrases element : quotes.getFamous_phrases()) {
  System.out.println(element.getPhrase1());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用杰克逊将json转换为java对象

杰克逊:将JSON转换为对象:对象的ArrayList与对象的arraylist与对象的arraylist

杰克逊将字符串转换为对象

使用杰克逊将Json对象转换为Java对象

杰克逊将动态json转换为地图

使用杰克逊将列表转换为json

杰克逊:使用点表示法将JSON属性转换为嵌套对象

使用杰克逊将Java对象转换为json字符串时重复的json属性

杰克逊从json字符串转换为Java对象导致默认对象

如何使用骆驼杰克逊将JSONArray转换为对象列表

使用杰克逊将对象转换为json时忽略未设置原始类型

如何忽略地图相关的括号,而使用杰克逊JSON转换为Java对象

改进的方式嵌套的JSON对象的布尔值转换为与杰克逊地图

杰克逊:如何将平面 json 转换为嵌套 json

杰克逊将json转换为String和列表的映射

杰克逊无法将json转换为地图列表

杰克逊,如何使用原始类型将json转换为Java类?

杰克逊自动将json日期转换为比其时间早8小时的日期

使用杰克逊将数据从json写入Java对象

使用杰克逊将asp.net/MS专有json日期格式转换为java8 LocalDateTime,同时将json反序列化为对象

如何在Java中使用杰克逊将输入字符串转换为JSON字符串或JSON对象

用杰克逊转换的protobuf以JSON?

杰克逊json日期格式转换

杰克逊JSON双向对象参考

使用杰克逊创建json对象

杰克逊验证输入JSON对象

按照通用类,使用具有动态JSON密钥的杰克逊将通用POJO转换为JSON

杰克逊不会自动将字段的复杂名称从json-object转换为dto-object

杰克逊如何将JsonNode转换为ArrayNode而不进行转换?