为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2023-07-28 16:13:45
我想使用 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。那里没什么特别的。
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超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);


查看完整回答
反对 回复 2023-07-28
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

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


     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"

            }

        ]


查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信