gpt4 book ai didi

java - GSON 解析器在循环 json 时跳过对象

转载 作者:行者123 更新时间:2023-11-30 05:24:26 24 4
gpt4 key购买 nike

我有一个 Json 数组,我将其解析为 GSON。其内容如下:

[
{
"type": "way",
"id": 70215497,
"nodes": [
838418570,
838418571
]
},
{
"type": "way",
"id": 70215500,
"nodes": [
838418548,
838418626
]
}
]

我尝试使用以下代码示例解析它:

    while (jsonReader.hasNext()){
Element type = gson.fromJson(jsonReader, Element.class);
if (type.GetType().contentEquals("way")) {
Way way = gson.fromJson(jsonReader, Way.class);
System.out.println(way.GetId());
}
}

其中 Element 只是

public class Element {
private String type;
public String GetType() {
return type;
}
}

方式

public class Way {
private long id;
private String type;
List<Long> nodes;
public long GetId() {
return id;
}
}

现在由于某种原因只有 70215500 会打印出来。实际代码中的其他一些元素也会发生这种情况。这是为什么?

编辑:它基本上只读取 1/2 对象。为什么?

最佳答案

您不需要先读取 Element 类,然后再读取 Way 类。读取 Way 并检查它的类型:

try (JsonReader jsonReader = new JsonReader(new FileReader(jsonFile))) {
jsonReader.beginArray();
while (jsonReader.hasNext()) {
Way way = gson.fromJson(jsonReader, Way.class);
if (way.getType().contentEquals("way")) {
System.out.println(way.getId());
}
}
}

上面的代码应该打印所有id

关于java - GSON 解析器在循环 json 时跳过对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946071/

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