2013-03-08 4 views
0

Я получаю строку JSON на моем сервере, которая имеет только два параметра: имя и номер. Пример ниже:Как получить больше одного значения одного и того же ключа с помощью Java

{"name":"outlet.jpg","numbar":"2"},{"name":"image.jpg","number":"3"}, {"name":"testing.jpg","number":"1"} 

Я пытаюсь распаковать эти значения в массив строк. Как мне это сделать?

Это то, что я до сих пор:

JSONObject jsonObject; 

     try { 
      jsonObject = new JSONObject(jsonString.substring(1, jsonString.length()-1)); 
      String name = jsonObject.getString("name"); 
      String number = jsonObject.getString("number"); 
      System.out.println("nome: " + name + " number: " + number); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

Там нет GetString() в JSONObject, который возвращает массив. В этом примере получается только первый элемент строки JSON. Как получить массив строк для каждой клавиши JSON String?

+1

Ваш JSON не является действительным, массив в формате JSON должен начинаться и end with [], вы удаляете их с помощью кода 'jsonString.substring'? –

+0

Что вы пытаетесь распаковать в массив, значения «name» или «numbar»? – Perception

+0

Также взгляните на этот класс: http://www.json.org/javadoc/org/json/JSONArray.html#JSONArray%28java.lang.String%29 –

ответ

5

Вы используете неправильный тип. То, что вы хотите, это JSONArray.

Это JSON:

[{"name":"outlet.jpg","number":"2"},{"name":"image.jpg","number":"3"}, {"name":"testing.jpg","number":"1"}] 

И этот код:

JSONArray json = new JSONArray(jsonString); 
for(int index = 0; index < json.length(); index++) { 
    JSONObject jsonObject = json.getJSONObject(index); 
    String name = jsonObject.getString("name"); 
    String number = jsonObject.getString("number"); 
    System.out.println("name: " + name + " number: " + number); 
} 

Если произвести этот вывод:

name: outlet.jpg number: 2 
name: image.jpg number: 3 
name: testing.jpg number: 1 
+0

Да! Ты прав! Работает отлично! Спасибо! :) –

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