导航到特定的 JSON 节点并使用 ObjectMapper



我想使用 Jackson 导航到特定的 JSON,然后通过 ObjectMapper 发送值。 如果 JSON 只是一个简单的数组,我目前可以实现这一点:

[
{
"parent": "A",
"child": "B"
},{
"parent": "G",
"child": "K"
}
]

我的 Java 代码看起来像这样,它可以工作。

ObjectMapper mapper = new ObjectMapper();
Row[] row;
row = mapper.readValue(json, Row[].class);

但是当 JSON 像这样嵌套时:

{
"data": [
{
"parent": "A",
"child": "B"
},{
"parent": "G",
"child": "K"
}
]
}

我不确定我需要做什么才能达到同样的效果。

Row类只是一个标准类,具有父属性和子属性及其 getter 和 setter。 那里没什么特别的。

您可以先使用readTree()来获取 JSON 字符串的树表示形式。然后使用 JSON 指针 (RFC-6901( 导航到要开始反序列化的JsonNode。之后,使用treeToValue()将树反序列化为Row[]

JsonNode rootNode = mapper.readTree(json);
JsonNode dataNode = rootNode.at("/data");
Row[] rows = mapper.treeToValue(dataNode, Row[].class);

你应该使用地图。其中数据是地图中的键,对象列表是值。这是您的列表 [] 是值。在你的列表中,你有一个对象。在爪哇...

Map<String, List<Parents>> studentsParent = HashMap<>(); class Parent{ String parent; String child; parent(String parent, String child){
this.parent = parent;
this.child = child; } 
} List<Parents> parents = new ArrayList<>(); 
studentsParent.put (data, Parents.add( Parent p = new Parent("A", "B"))); [
{
"parent": "A",
"child": "B"
},{
"parent": "G",
"child": "K"
}
]