Murtaza
Murtaza

Reputation: 61

I want to parse this JSON with volley but I am not able to do it

I want to parse this JSON in Volley Library. I have set everything I want to parse name of the recipe and image. Problem is that I want three recipes to be parsed at same time but here it have same Object name Recipe and I don't know how to parse same object name for three different TextViews.

Here is the JSON format: link

Here is the code I tried but it gave me one name not three different names:

try {

  JSONArray list = response.getJSONArray("hits");

  Log.v ("MISH", "List: " + list);

  for (int x = 0; x<list.length(); x++) {
    JSONObject obj = list.getJSONObject(x);
    JSONObject main = obj.getJSONObject("recipe");
    String label = main.getString("label");
    String image = main.getString("image");

    Picasso.with(getApplicationContext()).load(image).into(recipeOne);

    Log.v("FISH", "NAME FATCH: " + label);
    recipeOneText.setText(label);

  }

Upvotes: 0

Views: 121

Answers (1)

KeLiuyue
KeLiuyue

Reputation: 8237

Try this.

And use optString in your code:

try {
  if (TextUtils.isEmpty(response)) {
    Toast.makeText(this, "response is null", Toast.LENGTH_SHORT).show();
    return;
  }

  JSONObject jsonObject = new JSONObject(response);
  JSONArray hits = jsonObject.getJSONArray("hits");
  // edited here ,add data in your code
  JSONObject jo1 = hits.getJSONObject(0);
  hits.put(0,jo1); // add jo1 JSONObject to the JSON array, the angle is 0
  hits.put(1,jo1); // add jo1 JSONObject to the JSON array, the angle is 1
  hits.put(2,jo1); // add jo1 JSONObject to the JSON array, the angle is 2

  for (int i = 0; i < hits.length(); i++) {
    JSONObject jo = hits.getJSONObject(i);
    JSONObject recipe = jo.getJSONObject("recipe");
    String label = recipe.optString("label");
    String image = recipe.optString("image");

    Picasso.with(getApplicationContext()).load(image).into(recipeOne);

    Log.v("FISH", "NAME FATCH: " + label);
    recipeOneText.setText(label);
  }
} catch (JSONException e) {
   e.printStackTrace();
}

Edit

// If your don't have to much data in your code , you can do like this .
JSONObject jo1 = hits.getJSONObject(0);
hits.put(0,jo1); // add jo1 JSONObject to the JSON array, the angle is 0
hits.put(1,jo1); // add jo1 JSONObject to the JSON array, the angle is 1
hits.put(2,jo1); // add jo1 JSONObject to the JSON array, the angle is 2

Upvotes: 1

Related Questions