2015-05-10 2 views
0

Я пытаюсь извлечь значение из пары ключ-значение в JSONObect. Вот структура:Извлечение значения JSON, которое является массивом

{"key1 ":["dog","cat"],"key2":["house","boat"]} 

Итак, я хочу, чтобы извлечь значения собаки и кошки, а также ценности дома и лодки. Я пробовал следующее в Java:

//obj - has this JSON. 

    Iterator iter = obj.keys(); 
    for (int i=0; i<len; i++){ 
     String key = (String)iter.next(); 
     System.out.println("Key is --> "+key); //This is correctly giving me the keys. 
     System.out.println("Value is --> "+clientDetails.getJSONArray(key)); //This is not working. I tried lots of other things but to no avail. 

    } 

Может ли кто-нибудь, пожалуйста, направить меня сюда.

спасибо, Kay

+0

Что такое 'clientDetails' здесь? –

ответ

0

Вы должны использовать быстрый JSON парсер (https://code.google.com/p/quick-json/)

Он может быть использован, как это:

JsonParserFactory factory=JsonParserFactory.getInstance(); 
JSONParser parser=factory.newJsonParser(); 
Map jsonMap=parser.parseJson(jsonString); 

Взятые с помощью: How to parse JSON in Java Этот парень объяснил мило.

0

Я думаю, что вы используете неправильную переменную с именем clientDetails. вы должны использовать тот же JSON obj здесь.

Приведенный выше код работает отлично для меня с таким же OBJ:.

String json = "{\"key1 \":[\"dog\",\"cat\"],\"key2\":[\"house\",\"boat\"]}"; 

JSONObject obj=new JSONObject(json); 
Iterator iter = obj.keys(); 
for (int i=0; i<obj.length(); i++){ 
    String key = (String)iter.next(); 
    System.out.println("Key is --> "+key); 
    System.out.println("Value is --> "+obj.getJSONArray(key)); 
} 
+0

Интересно, как он работает на вас! Потому что вы используете JSONArray в последней строке. JSONArray начинается с "[". Это определенно не JSONArray. – kartik

+0

См. Здесь. В JSONObject есть два ключа с именем 'key1' и' key2'. и там пара значений будет '[" house "," boat "]' и '[" dog "," cat "]' соответственно. Оба они явно массивы JSON. Так что эта программа будет работать нормально. –

-1

Спасибо за сколов, я нашел ответ на мой вопрос. Вот как я извлек значение JSON, которое представляет собой пару ключевых значений, а значение представляет собой массив.

Iterator iter = obj.keys(); 
    for (int i=0; i<len; i++){ 
     String key = (String)iter.next(); 
     System.out.println("Key is --> "+key); 
     String[] arr = (String[])clientDetails.get(key); //Here I am extracting the value which is an array, converting it to String array and then storing it in a variable of type String[]. Now I can loop through this "arr" 

for (int m=0; m<arr.length;m++){ 
     arr[]m // Can do whatever I want here! 
    } 

Спасибо, ребята! -Kay

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