Ostap
Ostap

Reputation: 25

How to access the JSON element?

 @Override
    protected void onPostExecute(String response) {
        String firstName = null;
        String lastName = null;
        try {
            JSONObject jsonResponse = new JSONObject(response);
            JSONArray jsonArray = jsonResponse.getJSONArray("");
            JSONObject userInfo = jsonArray.getJSONObject(0);

            firstName = userInfo.getString("id");
            lastName = userInfo.getString("id");

        }
        catch (JSONException e){
            e.printStackTrace();
        }

I have this JSON file https://api.myjson.com/bins/1a5t7w How i can acces to thats values, i used this code but it doesn`t work? It returns @null@

Upvotes: 0

Views: 210

Answers (3)

Manish Jindal
Manish Jindal

Reputation: 56

Answer by Arunangshu seems correct, you need to extract the JSONArray first because the API is returning JSONArray(array of JSON objects) and not one big JSON object.

One can use http://jsonviewer.stack.hu/ for viewing JSON. It gives better understanding of the JSON structure.

For Java, one can use http://www.jsonschema2pojo.org/ for converting JSON object(not array) to Java Pojo class (select the options carefully).

Following is the first object from json array -

{"id":48191,"title":"Apple Crumble Recipe","image":"https://spoonacular.com/recipeImages/48191-312x231.jpg","imageType":"jpg","usedIngredientCount":1,"missedIngredientCount":2,"missedIngredients":[{"id":4073,"amount":35.0,"unit":"g","unitLong":"grams","unitShort":"g","aisle":"Milk, Eggs, Other Dairy","name":"margarine","original":"35 g margarine or butter","originalString":"35 g margarine or butter","originalName":"margarine or butter","metaInformation":[],"meta":[],"image":"https://spoonacular.com/cdn/ingredients_100x100/butter-sliced.jpg"},{"id":8120,"amount":35.0,"unit":"g","unitLong":"grams","unitShort":"g","aisle":"Cereal","name":"rolled oats","original":"35 g rolled oats","originalString":"35 g rolled oats","originalName":"rolled oats","metaInformation":[],"meta":[],"image":"https://spoonacular.com/cdn/ingredients_100x100/rolled-oats.jpg"}],"usedIngredients":[{"id":9003,"amount":400.0,"unit":"g","unitLong":"grams","unitShort":"g","aisle":"Produce","name":"apples","original":"400 g cooking apples peeled cored and quartered","originalString":"400 g cooking apples peeled cored and quartered","originalName":"cooking apples peeled cored and quartered","metaInformation":["cored","peeled","quartered"],"meta":["cored","peeled","quartered"],"image":"https://spoonacular.com/cdn/ingredients_100x100/apple.jpg"}],"unusedIngredients":[],"likes":965}

Upvotes: 0

Arunangshu Pal
Arunangshu Pal

Reputation: 21

  1. You are getting a JSON array in the response.
  2. To parse this array you need to pass the response to JSONArray object like below
try {
    JSONArray rspArr = new JSONArray(response);
    for(int i= 0; i< rspArr.length(); i++){
        JSONObject jsonObject = (JSONObject) rspArr.get(i);
        //Your logic
    }
}catch (Exception e ){
        //log exception
}

Upvotes: 1

gyosida
gyosida

Reputation: 460

// since you know is an array, create a JSONArray based on your response String    
JSONArray array = JSONArray(response)
// obtain the first element of your array as a JSONObject
JSONObject jsonObject = array.getJSONObject(0)
// once you get the jsonObject you can start getting the values you need
String id = jsonObject.getString("id")

Hope it helps!

Upvotes: 0

Related Questions