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?
15 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();
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