这是我的JSON数据:
[
{
"page": 0,
"threads": [
{
"no": 498507562,
"last_modified": 1375984181
},
{
"no": 498503346,
"last_modified": 1375984243
},
{
"no": 498497523,
"last_modified": 1375984241
},
{
"no": 498496579,
"last_modified": 1375984241
},
{
"no": 498499114,
"last_modified": 1375984240
},
{
"no": 498503169,
"last_modified": 1375984239
},
{
"no": 498497038,
"last_modified": 1375984239
},
{
"no": 498501946,
"last_modified": 1375984238
},
{
"no": 498507181,
"last_modified": 1375984237
},
{
"no": 498505625,
"last_modified": 1375984236
},
{
"no": 498505578,
"last_modified": 1375984242
},
{
"no": 498507346,
"last_modified": 1375984236
},
{
"no": 498497504,
"last_modified": 1375984236
},
{
"no": 498486742,
"last_modified": 1375984234
},
{
"no": 498502590,
"last_modified": 1375984232
}
]
},
{
"page": 1,
"threads": [
{(...so on)
这是我的反序列化代码:
Gson gson = new Gson();
JSONArray pageJson = JsonReader.readJsonArrayFromUrl(
"https://api.4chan.org/b/threads.json");
System.out.println(pageJson.toString());
PageResponse PageResponse = gson.fromJson(pageJson.toString(), PageResponse.class);
我在PageResponse上收到错误。这是我的PageResponce类。我想我可能正确处理这些信息。我只使用过JsonObjects。我想知道如何获得“页面”:0,然后如何获得“线程”
public class PageResponse {
List<Page> pages;
public List<Page> getPages() {
return pages;
}
}
我的网页课
公共类页面{
int page;
public int getPage() {
return page;
}
}
答案 0 :(得分:4)
使用JSONArray#getJSONObject()
先将Page
对象拉出阵列。
Page page = gson.fromJson(pageJson.getJSONObject(0).toString(), Page.class);
System.out.println(page.getPage()); // 0
要反序列化所有页面,请使用
Page[] pages = gson.fromJson(pageJson.toString(), Page[].class);
System.out.println("Total: " + pages.length); // 2
System.out.println("pages[0] = " + pages[0].getPage()); // pages[0] = 0
或者,在JSON字符串中添加一组额外的{}
以匹配封闭的PageResponse
对象。它的List<Page>
现在将匹配上面反序列化的Page[]
个对象。
PageResponse pageResp = gson.fromJson("{ pages : " + pageJson.toString() + " }",
PageResponse.class);
System.out.println(pageResp.getPages().get(1).getPage()); // 1
现在,如果您使用Page
扩展Threads
课程
class Page {
private int page;
private List<Threads> threads;
public int getPage() {
return page;
}
public List<Threads> getThreads() {
return threads;
}
}
class Threads {
private long no;
private String last_modified;
public long getNo() {
return no;
}
public String getLastModified() {
return last_modified;
}
}
整个JSON将成功反序列化。
System.out.println(pageResp.getPages().get(0).getThreads().size()); // 15
System.out.println(pageResp.getPages().get(0)
.getThreads().get(0).getNo()); // 498507562
System.out.println(pageResp.getPages().get(0)
.getThreads().get(0).getLastModified()); // 1375984181