How to Parse a JSON Object In Android
Solution 1
In the end I solved it by using JSONObject.get
rather than JSONObject.getString
and then cast test
to a String
.
private void saveData(String result) {
try {
JSONObject json= (JSONObject) new JSONTokener(result).nextValue();
JSONObject json2 = json.getJSONObject("results");
test = (String) json2.get("name");
} catch (JSONException e) {
e.printStackTrace();
}
}
Solution 2
In your JSON format, it do not have starting JSON object
Like :
{
"info" : <!-- this is starting JSON object -->
{
"caller":"getPoiById",
"results":
{
"indexForPhone":0,
"indexForEmail":"NULL",
.
.
}
}
}
Above Json starts with info
as JSON object. So while executing :
JSONObject json = new JSONObject(result); // create JSON obj from string
JSONObject json2 = json.getJSONObject("info"); // this will return correct
Now, we can access result
field :
JSONObject jsonResult = json2.getJSONObject("results");
test = json2.getString("name"); // returns "Marina Rasche Werft GmbH & Co. KG"
I think this was missing and so the problem was solved while we use JSONTokener
like answer of yours.
Your answer is very fine. Just i think i add this information so i answered
Thank you
Solution 3
Take a look at http://developer.android.com/reference/org/json/JSONTokener.html
This might fix your issue.
Solution 4
JSONArray jsonArray = new JSONArray(yourJsonString);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj1 = jsonArray.getJSONObject(i);
JSONArray results = patient.getJSONArray("results");
String indexForPhone = patientProfile.getJSONObject(0).getString("indexForPhone"));
}
Change to JSONArray, then convert to JSONObject.
Related videos on Youtube
Comments
-
jiduvah almost 2 years
I am having some problems pulling values from a JSON object. Here is my code
try { JSONObject json = new JSONObject(result); JSONObject json2 = json.getJSONObject("results"); test = json2.getString("name"); } catch (JSONException e) { e.printStackTrace(); }
test
is declared as aString
. When the code runs it is showingnull
. If I hover overjson2
in debug mode I can see all the values and names within the object.I also tried
test = json2.length();
This returned
test = 0
. Even when I hover over thejson2
object I can read the values within the object.Here is an example of a JSON string I will use.
{ "caller":"getPoiById", "results": { "indexForPhone":0, "indexForEmail":"NULL", "indexForHomePage":"NULL", "indexForComment":"NULL", "phone":"05137-930 68", "cleanPhone":"0513793068", "internetAccess":"2", "overnightStay":"2", "wasteDisposal":"2", "toilet":"2", "electricity":"2", "cran":"2", "slipway":"2", "camping":"2", "freshWater":"2", "fieldNamesWithValue":["phone"], "fieldNameTranslations": ["Telefon"], "id":"1470", "name":"Marina Rasche Werft GmbH & Co. KG", "latitude":"52.3956107286487", "longitude":"9.56583023071289" } }
-
harism about 13 yearsJSON string example you provided works for me at least. Are you facing problems with that string too?
-
Giant about 11 yearscan you show the whole code for this?or atleast help me with my problem with jsonobject
-
-
jiduvah about 13 yearsI posted the updated code above, but I still have the same problem @Dave G
-
Raiyan about 10 yearsI ran into the same problem and solved it by following your approach. Did you look for/manage to find an explanation why this works but getJSONObject doesn't ?
-
Daniel Kabu Asare about 4 yearsbecause your json is an object and not an array so you use Jsonobject