Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Traverse a JsonNode

This is how much JsonNode response looks like. How can I traverse it to get the response in both key and value pair. Thank you.

{
    "message": "Results field contain api response",
    "results": {
        "Person 1": "USA",
        "Person 2": "India",
        "Name 3": "Europe",
        "People": "Germany"
    }
}```

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

If you can assume the basic structure, where the top level is a map (JSONObject) that contains a ‘message’ key with a simple value, and a ‘results’ key with a value that is a collection of key/value pairs, then here’s how to read the structure with JSON.simple:

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

class Test2 {
    public static void main(String[] args) {
        try (Reader reader = new FileReader("/tmp/test.json")) {
            JSONObject root = (JSONObject)(new JSONParser()).parse(reader);
            System.out.println("Message: " + root.get("message"));
            JSONObject results = (JSONObject) root.get("results");
            for (Object key: results.keySet())
                System.out.println(key + ": " + results.get(key));
        } catch (IOException | ParseException e) {
            throw new RuntimeException(e);
        }
    }
}

Result:

Message: Results field contain api response
Person 1: USA
Person 2: India
People: Germany
Name 3: Europe

If you can’t assume a specific structure, then you’d need to read the root and test its type. Then, if it’s a JSONObject, iterate over the keys and values in that object. You’d then have to test the type of each value in the iteration to know what to do with that value. You would keep going as deep as necessary to parse and process all the values in the structure. If you need to allow for JSONArray values, you’d to the same thing with those, iterating over the values in the array, repeating the process on each value. And so on and so on. A recursive function works great here, where when you find a new JSONObject or JSONArray value, you call the same function you’re in to process that sub-object.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading