gpt4 book ai didi

java - 获取内部数据 JsonReader android

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:11 25 4
gpt4 key购买 nike

所以我一直在四处寻找,但不确定如何处理这个问题。我正在解析如下所示的 JSON

{
"foo1" : { /* data I want */ },
"foo2" : { /* data I want */ },
"foo3" : { /* data I want */ },
...
}

由于我正在尝试浏览一个大文件,因此我正在使用流。我现在拥有的是

gson = new GsonBuilder().create();

JsonReader jReader = new JsonReader(new InputStreamReader(getResources()
.openRawResource(R.raw.all_sets_x), "UTF-8"));

while (jReader.hasNext() && jReader.peek() != JsonToken.END_DOCUMENT) {
Set set = gson.fromJson(jReader, Set.class);
sets.add(set);
}

我的问题是我想跳过 foo,只读取 {/* 我想要的数据 */}。我不知道我可能会得到什么不同的东西。当我尝试跳过时,它会跳过外部大括号,但是当我 beginObject 时,它会在大括号内的字符串上出现我想要的数据的错误。我确信我可能错过了一些简单的东西,但对于我的生活我不确定。我尝试使用 beginObject 来创建 json 对象并使用 gson 解析该对象,但我也没有成功。感谢您的帮助!

最佳答案

好吧,我明白了。我将该名称隔开,当它是我的对象中的一个字段时,它会出错,在本例中,它也是对象标题的 JSON (foo1)。我发现我可以通过

进入第一个对象
jsonReader.beginObject();

jsonReader.nextName();

while (jsonReader.hasNext() && jsonReader.peek() != JsonToken.END_DOCUMENT) {
Set set = gson.fromJson(jsonReader, Set.class);
sets.add(set);
jsonToken = jsonReader.peek();
if (jsonToken == JsonToken.NAME) {
jsonReader.nextName();
} else if (jsonToken != JsonToken.END_DOCUMENT) {
jsonReader.endObject();
jsonReader.skipValue();
jsonToken = jsonReader.peek();
if (jsonToken != JsonToken.END_DOCUMENT) {
jsonReader.nextName();
}
}
}

这允许我获得第一个 foo 之后的 {/* 我想要的数据 */} 以及它之后的所有 foo,我必须检查它是否是一个名称,因为我相信 json 对象中的某个地方有一个额外的结束对象。

关于java - 获取内部数据 JsonReader android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462714/

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