0

我正在尝试解析 JSON 响应。我收到如下 JSON 响应:

"libraryLastModified" : "2012-10-10 03:57:26",
"playlists" : { "10063" : { "id" : "10063",
       "name" : "Favorites",
       "songs" : [ "10006134",
           "10006053",
           "10006274",
           "10006167",
        ]
    },
    "10157" : { "id" : "10157",
        "name" : "80s",
        "songs" : [ "10006694",
            "10006695",
            "10006697",
            "10006699",
            "10006698",
        ]
    }

如何访问 id 和 name 值?

4

3 回答 3

3

GSON。在这种情况下,您将创建两个类。

public class PLayList {
 private int id;
 private String name;
 private List<Integer> songs;
 //getters and setters
}

public class Library {
 private Date libraryLastModified;
 private List<Playlist> playlists;
 //getters and setters
}

然后你可以写

 Gson gson = new Gson();
 Library result = gson.fromJson(theInput, Library.class);

由于播放列表作为 key:value 提供给您,因此您需要为它们编写自定义反序列化程序。Taje看看GSON 将键值反序列化为自定义对象,了解如何做到这一点

于 2012-10-11T11:38:34.037 回答
1

在伪代码中。我不记得确切的 JSON 方法

JSONObject mainObj = parseJson
JSONObject playLists = mainObj.getJSONObject("playlists")
JSONObject myList = playList.getJSONObject("10063")

id = myList.getString("id")

要遍历多个列表,您最好将播放列表转换为 JSONArray,然后您可以遍历它。如果您不能这样做,请检查 Android JSON API 并检查如何获取 JSONObject 的所有密钥,然后遍历这些密钥

for(int i=0;i<playlistKeys.length;i++){
  playlistObj = playLists.getJSONObject(playlistsKey[i])
}
于 2012-10-11T11:39:52.703 回答
0

使用谷歌 Gson。 http://code.google.com/p/google-gson/

class Response{
Date libraryLastModified;
Playlist []playlists;

class Playlist{
    Long id;
    String name;
    Long[] songs;
}

}
String _response=... //Your response from web
Response response = new GsonBuilder().setDateFormat("yyyy-MM-dd' 'HH:mm:ss").create().fromJson(_response, Response.class);

String songName = response.playlists[0].name;
于 2012-10-11T11:44:05.367 回答