0

Normally for nested JSON data, we can easily parse it if they have the same key. but if the keys in nested JSON are different and the name of the key depends on another nested JSON file, how can we parse it? can anybody please help.

for this kind of JSON data

{
    "contacts": [
        {
            "id": "c200",
            "name": "Ravi Tamada",
            "phone": {
                "mobile": "+91 0000000000",
                "home": "00 000000",
                "office": "00 000000"
            }
        },
        {
            "id": "c201",
            "name": "Johnny Depp",
            "phone": {
                "mobile": "+91 0000000000",
                "home": "00 000000",
                "office": "00 000000"
            }
        },
        {
            "id": "c202",
            "name": "Leonardo Dicaprio",
            "phone": {
                "mobile": "+91 0000000000",
                "home": "00 000000",
                "office": "00 000000"
            }
        }
    ]
}

we can parse like this

for (int i = 0; i < contacts.length(); i++) {
    JSONObject c = contacts.getJSONObject(i);
    String id = c.getString("id");
    String name = c.getString("name");


    // Phone node is JSON Object
    JSONObject phone = c.getJSONObject("phone");
    String mobile = phone.getString("mobile");
    String home = phone.getString("home");
    String office = phone.getString("office");

    // tmp hash map for single contact
    HashMap<String, String> contact = new HashMap<>();

    // adding each child node to HashMap key => value
    contact.put("id", id);
    contact.put("name", name);
    contact.put("email", email);
    contact.put("mobile", mobile);

    // adding contact to contact list
    contactList.add(contact);
}

but how can we parse if the nested JSON value has different keys? my JSON data is below:

{ "kind": "webfonts#webfontList",
"items": [
  {
   "variants": [
    "regular",
    "italic"
   ],

   "files": {
    "regular": 
"http://fonts.gstatic.com/s/abeezee/v11/mE5BOuZKGln_Ex0uYKpIaw.ttf",
    "italic": 
"http://fonts.gstatic.com/s/abeezee/v11/kpplLynmYgP0YtlJA3atRw.ttf"
   }
  },
  {

   "variants": [
    "regular"
   ],

   "files": {
    "regular": 
"http://fonts.gstatic.com/s/abel/v8/RpUKfqNxoyNe_ka23bzQ2A.ttf"
   }
  },
  {

   "variants": [
    "regular",
    "500",
    "600",
    "700",
    "800"
   ],
   "files": {
    "regular":     "http://fonts.gstatic.com/s/abhayalibre/v3/zTLc5Jxv6yvb1nHyqBasVy3USBnSvpkopQaUR-2r7iU.ttf",
    "500":     "http://fonts.gstatic.com/s/abhayalibre/v3/wBjdF6T34NCo7wQYXgzrc5MQuUSAwdHsY8ov_6tk1oA.ttf",
    "600":     "http://fonts.gstatic.com/s/abhayalibre/v3/wBjdF6T34NCo7wQYXgzrc2v8CylhIUtwUiYO7Z2wXbE.ttf",
    "700":     "http://fonts.gstatic.com/s/abhayalibre/v3/wBjdF6T34NCo7wQYXgzrc0D2ttfZwueP-QU272T9-k4.ttf",
    "800":     "http://fonts.gstatic.com/s/abhayalibre/v3/wBjdF6T34NCo7wQYXgzrc_qsay_1ZmRGmC8pVRdIfAg.ttf"
   }
  }
]
}

somebody, please help...

Vaibhav Bhavsar
  • 432
  • 4
  • 12
Sudeep
  • 129
  • 10

0 Answers0