转换具有多个列表作为字段的JSON对象

时间:2018-11-20 18:22:03

标签: java json jackson

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

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

ObjectMapper将此转换为以LinkedHashMap为键的lines,并且值为带有ArrayList的{​​{1}},其中LinkedHashMapsvalue等。

有没有一种方法可以将这个json读取为带有字段example的对象,该字段是包含适合对象的列表/数组(在这种情况下,是将list作为字段的简单对象)?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以直接通过Jackson来实现。 为此,您需要通过一些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对象中 ObjectMapper的{​​{3}}方法之一。 例如,从File中读取内容:

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