How to get a JSON array inside a 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 get the identifier, the name of this part works great in getting the first part of JSON

 //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").toString(), Toast.LENGTH_LONG).show(); // getting inner array Ingredients JSONArray ja = jObj.getJSONArray("Ingredients"); int len = ja.length(); } 

Now I'm trying to get the ingredients not sure how this is what I tried

 //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").toString(), 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").toString(), Toast.LENGTH_LONG).show(); } } 

But it doesn’t work, how can I get it?

+6
source share
5 answers

I think this will help you.

 JSONObject jsonObj = new JSONObject(jsonStr); JSONArray ja_data = jsonObj.getJSONArray("data"); int length = jsonObj.length(); for(int i=0; i<length; i++) { JSONObject jsonObj = ja_data.getJSONObject(i); Toast.makeText(this, jsonObj.getString("Name").toString(), Toast.LENGTH_LONG).show(); // getting inner array Ingredients JSONArray ja = jsonObj.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").toString()); } } 
+6
source

Solved, use a list of string arrays to get the name from the 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").toString(), 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").toString()); } } 
+3
source
 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 } } 
+2
source

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

+1
source
 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")); } } 
0
source

All Articles