猿问

导航到特定的 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。那里没什么特别的。


明月笑刀无情
浏览 153回答 2
2回答

拉风的咖菲猫

您可以首先使用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);

翻过高山走不出你

你应该使用地图。其中数据是映射中的键,对象列表是值。这是您的列表 [] 是值。在你的列表中你有一个对象。在java中......&nbsp; &nbsp; &nbsp;Map<String, List<Parents>> studentsParent = HashMap<>(); class Parent{ String parent; String child; parent(String parent, String child){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.parent = parent;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;this.child = child; }&nbsp;} List<Parents> parents = new ArrayList<>();&nbsp;&nbsp; studentsParent.put (data, Parents.add( Parent p = new Parent("A", "B"))); [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "parent": "A",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "child": "B"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "parent": "G",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "child": "K"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; ]
随时随地看视频慕课网APP

相关分类

Java
我要回答