2015-06-02 3 views
8

Как бы разобрать массив, как показано на Android?Parse JSON Array без ключа в Android

[ 
5, 
10, 
15, 
20 
] 

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

{ 
"items": [ 
    5, 
    10, 
    15 
    ] 
} 

Для второго массива, я могу легко сделать JSONObject и просто использование:

JSONArray itemArray = jsonObject.getJSONArray("items") 

Но, как очевидно, нет ключа для первого массива. Так как же это можно сделать? Это даже возможно со стандартными библиотеками Android?

ответ

11

Вы пробовали это сделать?

try { 
    // jsonString is a string variable that holds the JSON 
    JSONArray itemArray=new JSONArray(jsonString); 
    for (int i = 0; i < itemArray.length(); i++) { 
     int value=itemArray.getInt(i); 
     Log.e("json", i+"="+value); 
    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Неужели это не разобрать второй файл JSON? Прошу прощения, если мой вопрос был написан смутным способом. Я хочу проанализировать первый файл JSON, который не имеет ключа «items». Означает ли это, что мой 'JSONArray' будет просто установлен в файл JSON, который я получаю? –

+1

Да, это проанализировало бы второй файл JSON. Извините, я не понял ваш вопрос. Чтобы получить первый JSONArray, вы бы сделали что-то вроде 'JSONArray itemArray = new JSONArray (yourstringname);' где 'yourstringname' является переменной String, которая содержит ваш JSON-файл (я предполагаю, что это строка), а затем остальное будет тоже самое. –

+1

Отлично, просто попробовал, и он работает по назначению. Если вы не возражаете, можете ли вы изменить свой ответ, чтобы он соответствовал вопросу для будущих читателей/ссылок? Я приму это после этого. –

0

Рассмотрим Foreach версию:

try { 
    JSONArray itemArray=jsonObject.getJSONArray("items"); 
    for (var item : itemArray) { 
     System.out.println(item); 
    } 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
0

Вы можете передать строку массива в JSONArray конструктору следующим образом:

String itemsJson = "[5,10,15,20]"; 
JSONArray itemArray = new JSONArray(itemsJson); 

Примечание: Вы должны добавить try/catch или throws для потенциал JSONException

0

Здесь вы можете получить прямой доступ к данным в массиве json.

JSONArray itemArray = jsonObject.getJSONArray("items"); 

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

{ 

int i = Integer.ParseInt(itemarray.get(i)); 

Log.i("Value is:::",""+i); 

}