Java GSON JsonReader给我值而不是名称?

Java GSON JsonReader给我值而不是名称?,java,android,json,gson,Java,Android,Json,Gson,我不得不重构我的应用程序的一些区域,以使用Gson中的流式API,但很快我就遇到了一个奇怪的问题,我不知道如何解决。我的类上的以下构造函数接收一个JsonReader,并且应该循环遍历对象的属性。LogCat显示第一个属性输出的名称,然后出现异常“应为名称,但为布尔值”。我只是使用reader.nextName()来询问名称。有什么好处 JSON对象: { "IsActive":true, "LocationName":"Denver", ... } 类构造函数: public AppLoca

我不得不重构我的应用程序的一些区域,以使用Gson中的流式API,但很快我就遇到了一个奇怪的问题,我不知道如何解决。我的类上的以下构造函数接收一个JsonReader,并且应该循环遍历对象的属性。LogCat显示第一个属性输出的名称,然后出现异常“应为名称,但为布尔值”。我只是使用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
下有一个很好的例子: