Android GSON:从同一个响应中解析几个不同的对象

时间:2011-10-20 10:56:38

标签: android json parsing gson

我正在努力移植一个非常依赖JSON到Android的iPhone应用程序。 其中一个必须解析的响应用于构建主屏幕。对此的JSON响应包含3个不同的对象,即图标,标题和播放器。这些都包含在对象Home中。 图标和播放器都包含一个项目数组,标题只是一个项目。

现在我还是JSON的初学者,我不太确定我应该如何解析这个回复。因此,在想自己解决问题之前,我想知道自己是否有正确的想法。

我的想法是创建4个不同的类,一个用于Home,图标,Header和Player。 Home将包含一个Icons和Player的数组,以及Header的一个对象。 但我不确定这是否是正确的方法。

问题中的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 个答案:

答案 0 :(得分:1)

是的,你是对的,你需要创建四个类,并需要初始化该类名称中的值..

使用JSONLint验证您的Json:

然后尝试此示例Parsing JSON using GSONOne More