我正在尝试将此json反序列化为POJO类,这样便可以管理对象了。 JSON:
{
"something": "x",
"items": [
{
"type": "y",
"id": "123",
"otherInfo": {
"tag": "abc",
"otherId": [
{
"first": "qaz",
"second": "zaq"
},
{
[...]
有10多个这样的元素。 我想对其进行反序列化,所以我使用jsonschema2pojo,使用getter,setter和构造函数创建了Item和otherInfo之类的类。
然后我在DAO类中创建了一个ObjectMapper:
ObjectMapper mapper = new ObjectMapper();
Item items;
{
try {
items = mapper.readValue(new File("path/file.json"), Item.class);
} catch (IOException e) {
e.printStackTrace();
}
}
public Item getAllItems(){
return items;
}
这样,我得到的输出为空。 将Item更改为Item []时,由于JSON中“项目”上方的“内容”,我得到了“ MismatchedInputException”。
当我尝试引用位于Item上一级的POJO类时,我将整个JSON作为单个数组元素包含其中的所有内容。很明显,但这表明ObjectMapper正常工作。
有没有一种简单或有效的方法可以像这样反序列化JSON?
答案 0 :(得分:0)
您可以创建一个包含ArrayList的父对象,以表示Item数组。
例如:
public class MyParentObject {
String something;
ArrayList<Item> items;
public ArrayList<Item> getItems() {
return items;
}
// the rest of your getters/setters
}
// the object mapper line becomes:
MyParentObject parentObject = mapper.readValue(new File("path/file.json"), MyParentObject.class);
ArrayList<Item> items = parentObject.getItems();
使用JSON反序列化,可以将JSON数组直接映射到ArrayList。