Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing nested JSON object in Android

Tags:

json

android

I'm trying to parse a JSON object, part of which looks like this:

{
"offer":{
    "category":"Salon",
    "description":"Use this offer now to enjoy this great Salon at a 20% discount. ",
    "discount":"20",
    "expiration":"2011-04-08T02:30:00Z",
    "published":"2011-04-07T12:00:33Z",
    "rescinded_at":null,
    "title":"20% off at Jun Hair Salon",
    "valid_from":"2011-04-07T12:00:31Z",
    "valid_to":"2011-04-08T02:00:00Z",
    "id":"JUN_HAIR_1302177631",
    "business":{
        "name":"Jun Hair Salon",
        "phone":"2126192989",
        "address":{
            "address_1":"12 Mott St",
            "address_2":null,
            "city":"New York",
            "cross_streets":"Chatham Sq & Worth St",
            "state":"NY",
            "zip":"10013"
        }
    },

And so on....

So far, I'm able to parse very simply, by doing this kinda thing:

JSONObject jObject = new JSONObject(content);
JSONObject offerObject = jObject.getJSONObject("offer");
String attributeId = offerObject.getString("category");
System.out.println(attributeId);

String attributeValue = offerObject.getString("description");
System.out.println(attributeValue);

String titleValue = offerObject.getString("title");
System.out.println(titleValue);`

But when I try it for 'name:' it won't work.

I've tried:

JSONObject businessObject = jObject.getJSONObject("business");
String nameValue = businesObject.getString("name");
System.out.println(nameValue);

When I try that, I get "JSONObject [business] not found."

And when I try:

String nameValue = offerObject.getString("name");
System.out.println(nameValue);`

I get, as expected, "JSONObject [name] not found".

What am I doing wrong here? I'm missing something basic....

like image 493
LuxuryMode Avatar asked May 13 '11 00:05

LuxuryMode


1 Answers

Ok, I'm an idiot. This works.

JSONObject businessObject = offerObject.getJSONObject("business");
String nameValue = businessObject.getString("name");
System.out.println(nameValue);

If I would only think for two seconds before posting... Jees!

like image 193
LuxuryMode Avatar answered Jan 11 '23 06:01

LuxuryMode