GSON JsonReader给了我价值而不是名字?

时间:2013-06-25 19:57:08

标签: java android json gson

我必须重构我的应用程序的某些区域才能在Gson中使用流API,但很快我遇到了一个奇怪的问题,我不知道如何绕过。我的类上的以下构造函数接收一个JsonReader,并且应该遍历该对象的属性。 LogCat显示第一个属性输出的名称,然后是异常“Expected a name but be 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());
        }

    }

1 个答案:

答案 0 :(得分:1)

使用此阅读器的流媒体方法使用“元素”,即名称或值。

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

除了您的代码正在调用reader.nextName(),这就是为什么它会说“预期名字......”


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