Использование GSON в Android для анализа сложного объекта JSON

Я относительно новичок в программировании на Java и должен разбирать сложный объект JSON через провод. Я читал документацию по GSON в прошлый день и не имел большого успеха, чтобы полностью разобрать этот тип структуры:

{ 'Events' : [{ 'name' : 'exp', 'date' : '10-10-2010', 'tags' : ["tag 1", "tag2", "tag3"] },...more events...], 'Contacts' : [{ 'name' : 'John Smith', 'date' : '10-10-2010', 'tags' : ["tag 1", "tag2", "tag3"] },...more contacts...], } 

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

Solutions Collecting From Web of "Использование GSON в Android для анализа сложного объекта JSON"

Правильный способ сделать это с помощью GSON в том формате, который я ищу, это:

 //somewhere after the web response: Gson gson = new Gson(); Event[] events = gson.fromJson(webServiceResponse, Event[].class); //somewhere nested in the class: static class Event{ String name; String date; public String getName() { return name; } public String getDate() { return date; } public void setName(String name) { this.name = name; } public void setDate(String date) { this.date = date; } } 

Java имеет свой собственный парсер JSON: мы можем использовать его и на Android.

Ниже вы можете найти, как вы можете получить все события из своей строки.

 String TAG = "JSON EXAMPLE"; String jsonString = "{\"Events\" : [{\"name\" : \"exp\",\"date\" : \"10-10-2010\",\"tags\" : [\"tag 1\",\"tag 2\",\"tag 3\"]}],\"Contacts\" : [{\"name\" : \"John Smith\",\"date\" : \"10-10-2010\",\"tags\" : [\"tag 1\",\"tag 2\",\"tag 3\"]}]}"; try { JSONObject jsonObj = new JSONObject(jsonString); // create a json object from a string JSONArray jsonEvents = jsonObj.getJSONArray("Events"); // get all events as json objects from Events array for(int i = 0; i < jsonEvents.length(); i++){ JSONObject event = jsonEvents.getJSONObject(i); // create a single event jsonObject Log.e(TAG, "Event name:" + event.getString("name") + " date: " + event.getString("date")); JSONArray eventTags = event.getJSONArray("tags"); for(int j = 0; j < eventTags.length(); j++){ Log.e(TAG, "Event tag: " + eventTags.getString(j)); } } } catch (JSONException e) { e.printStackTrace(); } 

Помните: ваш объект JSON (из вашего вопроса) выдает исключение, потому что он недопустим (я не уверен, но он похож на объект javascript). Вы должны добавить некоторые кавычки к каждому свойству (ключ) и вывести их с помощью \ (\ ").
Этот инструмент действительно хорош для проверки правильности строки JSON или нет.