2015-09-17 5 views
6

Это мой JSONКак получить массив JSON внутри объекта 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" 
       } 
      ] 
     } 
    ] 
} 

И это, как я получаю идентификатор, название эта часть работает отлично в получении первой части 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(); 


} 

Теперь я пытаюсь получить ингредиенты не уверен, как это то, что я пытался

//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(); 
    } 
} 

Но разве не работает, как я могу получить?

+1

Пожалуйста, объясните, _ "не работает" _. –

ответ

3

Решенный, используйте массив строк для получения имени из Ингредиентов. Используйте ниже код:

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()); 
    } 
} 
2
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 
    } 
} 
6

Я думаю, это поможет вам.

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()); 
    } 
} 
0
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")); 
       } 


     } 
1

Ваш int length = jsonObj.length(); должен быть int length = ja_data.length();

+0

Это должен быть комментарий –

Смежные вопросы