How to deep select Nodes based on given depth in Java?
If you may switch to Gson library you may use im.wilk.vor:Voritem library gitHub or in Maven repository.
VorItem vorItemFactory = VorItemFactoryBuilder.standard.build();JsonElement je = JsonParser.parse(...)VorItem vi = vorItemFactory.from(je);VorItem result = vorItemFactory.empty();for (int idx = 0; idx < vi.get("result").list().size(); idx++) { result.get(idx).set("name", vi.get("result").get(idx).get("associations/child/name"); result.get(idx).set("key", vi.get("result").get(idx).get("associations/child/key");}return result.asJsonElement().toString();
I found Andreas suggestion to be very effective and usage friendly, I was able to achieve desired output by using JSONPath library .
Usage code is as follows:
ObjectMapper objectMapper = new ObjectMapper();String root = objectMapper.readTree(new File("/Users/pramo/automation/foo.json")).toString();List<Object> associations = JsonPath.read(root, "$.results[*].associations.child");