У меня есть динамический 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, но я не мог найти очевидный способ получить реальный родительский (содержащий / внешний) элемент с помощью этого.
В этом примере я использую Джексона, но я открыт дляальтернативы