首页 > 解决方案 > 如何在 JSON 中获取子元素的父元素名称?

问题描述

我有一些动态 JSON,在处理之前我不知道完整的结构。

但是,我知道 JSON 可能包含某些感兴趣的嵌套元素。

e. 对于这个示例有效载荷


{
  "id": "3334343",
  "contractor": {
    "ppsNo": "123334"
  },
  "fullTimeStaff":{
    "ppsNo": "343434"
  }
}

我想找到包含名为ppsNo的元素的所有外部元素的名称。

我曾尝试使用root.findParents("ppsNo")但这给了我 ppsNo 元素,而不是我感兴趣的承包商fullTimeStaff的外部(父)元素。

    ObjectMapper objectMapper = new ObjectMapper();
    String payload = "{\n" +
            "  \"id\": \"3334343\",\n" +
            "  \"contractor\": {\n" +
            "    \"ppsNo\": \"123334\"\n" +
            "  },\n" +
            "  \"fullTimeStaff\":{\n" +
            "    \"ppsNo\": \"123334\"\n" +
            "  }\n" +
            "}";

    JsonNode root = objectMapper.readTree(payload);

    List<JsonNode> nodes = root.findParents("ppsNo");

返回的 JsonNodes 是{"ppsNo":"123334"}元素而不是外部包含节点(“contractor”和“fullTimeStaff”)。

有没有办法做到这一点?我曾研究过使用 JSON 路径,但我看不到一种明显的方法来使用它来获取真正的父(包含/外部)元素。

我在这个例子中使用杰克逊,但我对替代品持开放态度

标签: javajsonjackson

解决方案


我没有花很多时间来编写代码。

您正在寻找的表达式Regex\{\n "ppsNo": "\w+"\n }(您使用链接https://regex101.com对其进行测试)。你应该做的是当你遇到这个表达式时开始倒退并阅读“”中的第一个单词。我希望它对你有帮助


推荐阅读