我正在使用杰克逊的ObjectMapper将JSON文件转换为Java对象。 如何转换具有数组作为其字段之一的JSON对象?下面的示例:
{
"list":[
{
"value":"example"
},
{
"value":"example2"
}
]
}
ObjectMapper
将此转换为以LinkedHashMap
为键的lines
,并且值为带有ArrayList
的{{1}},其中LinkedHashMaps
和value
等。
有没有一种方法可以将这个json读取为带有字段example
的对象,该字段是包含适合对象的列表/数组(在这种情况下,是将list
作为字段的简单对象)?
答案 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);