2013-02-14 2 views
0

У меня есть JSON, как показано ниже:Android - JSON синтаксический

{ 
     "places": [{ 
      "name": "Ankola", 
      "slug": "ankola", 
      "category": "beach", 
      "distance": "521", 
      "travel_time": "8 hrs, 2 mins", 
      "days": "3", 
      "latitude": "14.669456", 
      "longitude": "74.300952", 
      "weather": "Summer 21\u00b0-36\u00b0C, Winter 12\u00b0-35\u00b0C", 
      "todo": "Baskal gudda, Nadibag, Shedikuli, Keni, Belekeri", 
      "about": "Ankola is a small town surrounded by numerous temples. It is in line with Arabian sea. Ankola is famous for its native breed of mango called ishaad and for cashews harvesting.", 
      "image": [ 
        "Cm5NXlq.jpg", 
        "9OrlQ9C.jpg", 
        "DRWZakh.jpg", 
        "dFKVgXA.jpg", 
        "5WO2nDf.jpg" 
        ] 

     }] 
} 

Я знаю, как извлечь ключ - пары значений, но я не знаю, как разобрать массив внутри JSON, чтобы сформировать массив строк (изображение - в моем случае)

Подводя итог, хочу что-то вроде этого: У меня есть 5 имен изображений под тегом «image», я хочу их в массив строк. Как я могу это сделать?

+2

JSONArray jsonArr = jsonObjet.getJSONArray ("изображение"); – Martin

+0

Надеюсь, что неправильная запятая - это ошибка копирования. Кроме того, почему имена изображений в фигурных скобках? Можете ли вы поговорить с тем, кто создает этот JSON? –

+0

действительно json? – rajeshwaran

ответ

1

Использование:

JSONArray images = yourJSONObject.getJSONArray("image"); 
for(int i = 0; i < images.length(); i++){ 
    String image = images.getString(i); 
} 

Это должно сделать трюк, как я помню.

1

Здесь вы идете:

JSONArray ja = whatEverYourJsonObject.getJSONArray("image"); 

for(int i=0; i<ja.length(); j++){ 
    String name = ja.getString(i); 
} 
1

Вы должны сначала преобразовать строку JSON в объект Java (JSONObject). Затем вы получите JSONArray и перейдете к нему.

Пример:

JSONObject jsonObj = null; 
try { 
    jsonObj = new JSONObject (jsonString); 
    JSONArray images = itemObj.getJSONArray ("images"); 
    int length = images.length(); 

    for (int i = 0; i < length; i++) 
     Log.d ("Image Filename", images.getString (i)); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

EDIT: Теперь я вижу, что ваш JSON недопустим - у вас есть объект для каждого изображения и этот объект содержит только значение часть данных. Пример действительного массива изображений будет выглядеть следующим образом:

{ 
    "image": [ 
     "Cm5NXlq.jpg", 
     "9OrlQ9C.jpg", 
     "DRWZakh.jpg", 
     "dFKVgXA.jpg", 
     "5WO2nDf.jpg" 
    ] 
} 
1

Я хотел бы предложить:

  1. Создайте свой собственный класс, который описывает ваша структуру данных, определенного того объектом JSON. В крайнем случае вы можете даже создавать Java класса на основе JSON строки - посмотреть на jsongen
  2. Когда вы будете иметь свой собственный класс Java (скажем MyClass) вы можете легко разобрать JSON для вашего порожденного класса Java с помощью GSON, как:

    MyClass myClass = gson.fromJson(jsonString, MyClass.class);

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