【问题标题】:Converting a JSON object with multiple lists as fields将具有多个列表的 JSON 对象转换为字段
【发布时间】:2018-11-20 18:22:03
【问题描述】:

我正在使用杰克逊的 ObjectMapper 将 JSON 文件转换为 Java 对象。 如何转换将数组作为其字段之一的 JSON 对象?示例如下:

{
  "list":[
    {
      "value":"example"
    },
    {
      "value":"example2"
    }
  ]
}

ObjectMapper 将其转换为LinkedHashMap,以lines 为键,值为ArrayListLinkedHashMaps,具有valueexample 等等。

有没有办法将此 json 读取为带有字段 list 的对象,该字段是包含适合的对象的列表/数组(在这种情况下,是带有 String value 作为字段的简单对象)?

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    找到了一种方法来做到这一点。此解决方案基于Gson 而不是ObjectMapper。 基本上,Gson 设法将数组转换为我希望在这里发生的字段,而不是生成大量 LinkedHashMaps

    【讨论】:

      【解决方案2】:

      您可以通过杰克逊以直接的方式实现这一目标。 为此,您需要通过一些 Java 类对 JSON 结构进行建模。

      首先,您需要一个用于对整个 JSON 内容进行建模的类 (让我们称之为Root)带有list 属性。

      public class Root {
      
          private List<Item> list;
      
          // public getter and setter (omitted here for brevity)
      }
      

      接下来,您需要一个用于对列表项进行建模的类 (让我们称之为Item)带有value 属性。

      public class Item {
      
          private String value;
      
          // public getter and setter (omitted here for brevity)
      }
      

      然后您可以通过使用将 JSON 内容读入 Java Root 对象 ObjectMapperreadValue(..., Class&lt;T&gt;) 方法之一。 例如从File 读取:

      ObjectMapper objectMapper = new ObjectMapper();
      Root root = objectMapper.readValue(new File("example.json"), Root.class);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-01
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多