Android GSON: парсинг нескольких разных объектов из одного и того же ответа - PullRequest
2 голосов
/ 20 октября 2011

Я работаю над переносом приложения для iPhone, которое сильно зависит от JSON на Android.Один из ответов, который необходимо проанализировать, используется для создания главного экрана.Ответ JSON для этого содержит 3 различных объекта, а именно значки, заголовок и проигрыватель.Все это содержится в объекте Home.Иконки и Player содержат массив элементов, заголовок - это всего лишь один элемент.

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

Моя идея состоит в том, чтобы создать 4 различных класса, один для дома, иконки, заголовок и игрок.Домой будет содержать массив иконок и игрока, а также объект заголовка.Но я не уверен, что это правильный способ сделать это.

Ответ JSON в вопросах выглядит следующим образом: (Некоторые объекты удалены из-за размера ответа)

{
  "Home": {
    "Icon": [
      {
        "ScreenID": 533,
        "ScreenIndex": 1,
        "IconName": "mainIcon_news",
        "Title": "News",
        "FK_ModuleID": 6,
        "FormID": 567,
        "ModName": "News",
        "MediaType": "",
        "New_Icon": 0
      },
      {
        "ScreenID": 528,
        "ScreenIndex": 2,
        "IconName": "mainIcon_music",
        "Title": "Music",
        "FK_ModuleID": 3,
        "FormID": 562,
        "ModName": "Media",
        "MediaType": "Music",
        "New_Icon": 0
      }
    ],
    "Header": [
      {
        "ModHomeRotationID": 183,
        "image_url": "*****/Media/68/1216_5.jpg",
        "flg_RotationEnabled": false,
        "flg_RotateOnlyOnReturn": true,
        "flg_RotationRandomize": false,
        "flg_RotationDelayMS": 5000,
        "flg_RotationDelayFadeMS": 3000,
        "HomeRotationIndex": null
      }
    ],
    "Player": [
      {
        "MediaID": 1219,
        "Track_Name": "***",
        "song_url": "*****/Media/68/1219.mp3",
        "song_remote_url": null,
        "FileSize": 4700502
      },
      {
        "MediaID": 1220,
        "Track_Name": "**** ",
        "song_url": "*****/Media/68/1220.mp3",
        "song_remote_url": null,
        "FileSize": 4350222
      }
    ]
  }
}

Может кто-нибудь сказать мне, в правильном ли я направлении, иесли нет, что я должен делать вместо этого?Я должен отметить, что в настоящее время я использую GSON для анализа ответов JSON.

Заранее спасибо

1 Ответ

1 голос
/ 20 октября 2011

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

Подтвердите свой Json, используя JSONLint :

Затем попробуйте этот пример Разбор JSON с использованием GSON и Еще один

...