java - GSON JsonReader 给我值而不是名称?

标签 java android json gson

我必须重构应用程序的某些区域才能使用 Gson 中的流 API,但很快我就遇到了一个奇怪的问题,我不知道如何解决。我的类中的以下构造函数接收一个 JsonReader 并应该循环访问该对象的属性。 LogCat 显示第一个属性输出的名称,然后显示异常“预期名称但为 BOOLEAN”。我只使用 reader.nextName() 询问名称。给出了什么?

JSON 对象:

{
"IsActive":true,
"LocationName":"Denver",
...
}

类构造函数:

public AppLocation(JsonReader reader){

        try {
            reader.beginObject();
            while(reader.hasNext()){
                final String pName = reader.nextName();
                final boolean isNull = reader.peek() == JsonToken.NULL;
                if(!isNull){
                    Log.d("MENET", pName);
                }else{
                    reader.skipValue();
                }
            }
            reader.endObject();
        } catch (IOException e) {
            Log.e("MENET", e.getMessage());
        }

    }

最佳答案

使用此阅读器的流式传输方法适用于“元素”,即名称或值。

因此,在第一个“元素”(即名称)之后,您将获得一个值。

除非您的代码正在调用 reader.nextName(),这就是为什么它显示“需要一个名称...”

<小时/>

Android 网站上的 JsonReader 下有一个很好的示例:

关于java - GSON JsonReader 给我值而不是名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17306371/

相关文章:

java - 当我单击 jList 中的项目时,背景颜色不会改变

android - Android 上加速度计读数的最大值

android - 获取旋转并以度数显示

json - 根据嵌套字符串的值过滤 JSON

java - 如何在我的 java 应用程序中对 Google OAuth 的 client_id 和 client_secret 进行硬编码?

java - Json数组和改造

java - Jackson 2.x 将空对象序列化为属性

java - 阅读文本字段时从一帧单击到另一帧

android - POSIX 级别的文件系统 API 能否在 OS X、iOS 和 Android 之间架起桥梁?

jquery - POST 到 WebAPI Controller 会导致参数为空