2016-01-08 3 views
-2

У меня есть ответ JSON в этом формате:JSON массив не разобран

{ 
    "success": true, 
    "categories": [{ 
     "id": "774", 
     "name": "1" 
    }, { 
     "id": "774", 
     "name": "1" 
    }] 
} 

И я разборе это так:

try { 
JSONObject obj = new JSONObject(response); 
String success = String.valueOf(obj.getBoolean("success")); 

JSONArray arr = obj.getJSONArray("categories"); 
//loop through each object 
for (int i=0; i<arr.length(); i++) { 

    JSONObject jsonProductObject = arr.getJSONObject(i); 
    String name = jsonProductObject.getString("name"); 
    String url = jsonProductObject.getString("id"); 
    Toast.makeText(getApplicationContext(),name, Toast.LENGTH_LONG).show(); 
} 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

Но я получаю только значение успеха. Что я здесь делаю неправильно?

+0

вы выборки неправильный массив. \t Это должен быть JSONArray arr = obj.getJSONArray ("categories"); \t вместо JSONArray arr = obj.getJSONArray ("checkouts"); – justDroid

+0

опубликуйте свои ошибки logcat –

+1

, почему вы получаете значение успеха в логическом порядке, как этот obj.getBoolean («success»), его неправильный путь, когда json отправляется в форме строки, извлекает его значение подобно этому 'String success = obj.getString («success»); ' –

ответ

1

Анализировать, как показано ниже -

JSONObject obj = new JSONObject(json); 

String success = obj.getString("success"); 
JSONArray arr = obj.getJSONArray("categories"); 
//loop through each object 
for (int i=0; i<arr.length(); i++) { 

    JSONObject jsonProductObject = arr.getJSONObject(i); 
    String name = jsonProductObject.getString("name"); 
    String url = jsonProductObject.getString("id"); 

} 
+0

Мне нравится простота метода. Благодарю. –

1

правильный ключ JSON

JSONArray обр = obj.getJSONArray ("извлечений");

заменить:

JSONArray обр = obj.getJSONArray ("категории");

+0

Я отредактировал код, это была моя ошибка. Теперь я использую ключевые слова категорий, но тот же результат. –

+0

эй, это не должно случиться, так как я проверил ваш код на все его работу. – nikk

1

DO, как это,

if (!result.equalsIgnoreCase("")) { 
       try { 
       JSONObject _jsonObject = new JSONObject(result); 
       boolean json = false; 

        json = _jsonObject.getBoolean("Status"); 
        JSONArray jsonArray1 = _jsonObject.getJSONArray("categories"); 

       for (int i=0; i<jsonArray1.length(); i++) { 

        JSONObject jsonObject = jsonArray1.getJSONObject(i); 
        String name = jsonObject.getString("name"); 
        String id = jsonObject.getString("id"); 

       } 
       } catch (Exception e) { 
        Utils.printLoge(5, "error parse json", "--->" + e.getMessage()); 
        return "ERROR"; 
       } 
      } 
+0

ваш peoblem решён? @Steve Kamau –

+0

Да, спасибо вам большое за вашу помощь !! –

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