gpt4 book ai didi

java - 应为 BEGIN_OBJECT 但实际为 BEGIN_ARRAY

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:14 25 4
gpt4 key购买 nike

这是我的 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。我想知道如何获得"page": 0,然后如何获得"threads"

public class PageResponse {

List<Page> pages;

public List<Page> getPages() {
return pages;
}

我的页面类

公共(public)类页面{

int page;

public int getPage() {
return page;
}

最佳答案

使用 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

现在,如果您扩展 PageThreads上课还有

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

关于java - 应为 BEGIN_OBJECT 但实际为 BEGIN_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18133557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com