How to Get JSON Array Within JSON Object?

This is my JSON:

{ "data": [ { "id": 1, "Name": "Choc Cake", "Image": "1.jpg", "Category": "Meal", "Method": "", "Ingredients": [ { "name": "1 Cup Ice" }, { "name": "1 Bag Beans" } ] }, { "id": 2, "Name": "Ice Cake", "Image": "dfdsfdsfsdfdfdsf.jpg", "Category": "Meal", "Method": "", "Ingredients": [ { "name": "1 Cup Ice" } ] } ]
}

And this is how I am getting the id and name, you can see this part works fine in returning JSON values that are not array values.

//getting whole json string
JSONObject jsonObj = new JSONObject(jsonStr);
//extracting data array from json string
JSONArray ja_data = jsonObj.getJSONArray("data");
int length = jsonObj .length();
//loop to get all json objects from data json array
for(int i=0; i<length; i++)
{ JSONObject jObj = ja_data.getJSONObject(i); Toast.makeText(this, jObj.getString("Name"), Toast.LENGTH_LONG).show(); // getting inner array Ingredients JSONArray ja = jObj.getJSONArray("Ingredients"); int len = ja.length();
} 

Now i'm trying to get the values from the ingredients array and I am not sure how to get them? This is what I have been trying thus far.

//getting whole json string
JSONObject jsonObj = new JSONObject(jsonStr);
//extracting data array from json string
JSONArray ja_data = jsonObj.getJSONArray("data");
int length = jsonObj .length();
//loop to get all json objects from data json array
for(int i=0; i<length; i++)
{ JSONObject jObj = ja_data.getJSONObject(i); Toast.makeText(this, jObj.getString("Name"), Toast.LENGTH_LONG).show(); // getting inner array Ingredients JSONArray ja = jObj.getJSONArray("Ingredients"); int len = ja.length(); // getting json objects from Ingredients json array for(int j=0; j<len; j++) { JSONObject json = ja.getJSONObject(j); Toast.makeText(this, json.getString("name"), Toast.LENGTH_LONG).show(); }
} 

But doing it this way is not working, how can I get it to work?

1

5 Answers

Solved, use array list of string to get name from Ingredients. Use below code:

JSONObject jsonObj = new JSONObject(jsonStr);
//extracting data array from json string
JSONArray ja_data = jsonObj.getJSONArray("data");
int length = ja_data.length();
//loop to get all json objects from data json array
for(int i=0; i<length; i++){ JSONObject jObj = ja_data.getJSONObject(i); Toast.makeText(this, jObj.getString("Name"), Toast.LENGTH_LONG).show(); // getting inner array Ingredients JSONArray ja = jObj.getJSONArray("Ingredients"); int len = ja.length(); ArrayList<String> Ingredients_names = new ArrayList<>(); for(int j=0; j<len; j++){ JSONObject json = ja.getJSONObject(j); Ingredients_names.add(json.getString("name")); }
}
JSONObject jsonObject =new JSONObject(jsonStr);
JSONArray jsonArray = jsonObject.getJSONArray("data");
for(int i=0;i<jsonArray.length;i++){ JSONObject json = jsonArray.getJSONObject(i); String id = json.getString("id"); String name=json.getString("name"); JSONArray ingArray = json.getJSONArray("Ingredients") // here you are going to get ingredients for(int j=0;j<ingArray.length;j++){ JSONObject ingredObject= ingArray.getJSONObject(j); String ingName = ingredObject.getString("name");//so you are going to get ingredient name Log.e("name",ingName); // you will get }
}
JSONObject jsonObj = new JSONObject(jsonString);
JSONArray jArray = jsonObj.getJSONArray("data");
int length = jArray.length(); for(int i=0; i<length; i++) { JSONObject jObj = jArray.getJSONObject(i); String id = jObj.optString("id"); String name=jObj.optString("name"); JSONArray ingredientArray = jObj.getJSONArray("Ingredients"); int size = ingredientArray.length(); ArrayList<String> Ingredients = new ArrayList<>(); for(int j=0; j<size; j++) { JSONObject json = ja.getJSONObject(j); Ingredients.add(json.optString("name")); } }

Your int length = jsonObj.length(); should be int length = ja_data.length();

1
 Gson gson = new Gson(); Type listType = new TypeToken<List<Data>>() {}.getType(); List<Data> cartProductList = gson.fromJson(response.body().get("data"), listType); Toast.makeText(getContext(), ""+cartProductList.get(0).getCity(), Toast.LENGTH_SHORT).show();
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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

You Might Also Like