How to Parse a JSON Object In Android

132,817

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.

Share:
132,817

Related videos on Youtube

jiduvah
Author by

jiduvah

I am jiduvah

Updated on July 09, 2022

Comments

  • jiduvah
    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 a String. When the code runs it is showing null. If I hover over json2 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 the json2 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
      harism about 13 years
      JSON string example you provided works for me at least. Are you facing problems with that string too?
    • Giant
      Giant about 11 years
      can you show the whole code for this?or atleast help me with my problem with jsonobject
  • jiduvah
    jiduvah about 13 years
    I posted the updated code above, but I still have the same problem @Dave G
  • Raiyan
    Raiyan about 10 years
    I 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
    Daniel Kabu Asare about 4 years
    because your json is an object and not an array so you use Jsonobject