0

How can I parse this JSON file correctly in Android?

I need all the objects from lets say tower 1 (there can be different amounts of weekdays in there) and also different amount of time frames in those weekdays.

I've successfully used a static method like

JSONObject jArray = ja.getJSONObject("towers").getJSONObject("tower1") .getJSONObject("tuesday").getJSONObject("11:45-12:20");

And then I got the value for value1 using the getString() method.

but they need to be dynamic since there are many possibilities.

{
"towers": {
"tower 1": {
  "tuesday": {
    "07:30-11:30": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "11:45-12:20": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    }
  }
},
"tower 2": {
  "wednesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "12:45-15:10": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "15:30-17:05": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    }
  },
  "tuesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "12:45-15:10": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "14:25-17:05": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    }
  }
}
},
"building": {
"building 1": {
  "monday": {
    "07:15-12:20": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "tuesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "wednesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "friday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  }
},
"building 2": {
  "saturday": {
    "08:05-11:00": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  }
},
"building 3": {
  "monday": {
    "12:45-15:10": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "tuesday": {
    "08:55-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    },
    "15:30-17:55": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "thursday": {
    "07:15-09:40": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    },
    "10:00-12:25": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  }
}
}
}
1
  • also show relevant part code what you have tried to parse current json string Commented May 30, 2013 at 7:57

2 Answers 2

1

if your json string keys are dynamic then you can parse it as:

JSONObject root = new JSONObject(yourString);
// get towers JSONObject
JSONObject towers = root.getJSONObject("towers"); 
// get all Towers name from towers JSONObject 

JSONArray alltowerslist=towers.names();

for(int i=0;i<alltowerslist.length();i++){
   // get sub towers from towers
   JSONObject sub_towers = towers.getJSONObject(alltowerslist.optString(i)); 
   // get days list from sub_towers
    JSONArray alldayslist=sub_towers.names();
    for(int j=0;j<alldayslist.length();j++){
       // get days from  sub_towers
        JSONObject days_json = sub_towers.getJSONObject(alldayslist.optString(j)); 

         // get time json JSONObject from days_json
        JSONArray alltimeslist=days_json.names();
        for(int k=0;k<days_json.length();k++){
       // get time from  sub_towers
        JSONObject time_json = days_json.getJSONObject(alltimeslist.optString(k));

        // now get all value1 from time_json
        JSONArray allvalelist=time_json.names();
        for(int l=0;l<time_json.length();l++){
           String str_value = time_json.optString(allvalelist.optString(l));
          }   
        }
    }
}
Sign up to request clarification or add additional context in comments.

1 Comment

Other question. How can I iterate through the "unknown" childs? for example if I want all times (And they are different in every child)?
0

Just have a look this link of nested json object response parsing....

http://yodi.polatic.me/example-parse-nested-json-array-and-object-java/

2 Comments

dead link. This is why just giving a link is an unacceptable answer :(
please check url now.@WizardKnight

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.