0

我正在使用 gson 来解析 JSON 回复。该代码适用于正确的 JSON 响应。但是,如果 JSON 回复是空数组,我的代码一直在抱怨“期待 begin_object 但得到 end_array”

JSON response
    {
        "list" : {
                  "data" : [

                  ]
         }
    }

我的代码

try {
    jsonReader.beginArray();
        do{
        jsonReader.beginObject();
            while(jsonReader.hasNext()){
                      // Parse all data
              jsonReader.endObject();
            } while(jsonReader.hasNext());
            jsonReader.endArray();
} catch (IOException e) {
//Exception
}

我知道上面的异常是什么意思,它只是意味着它期望一个数组中的对象来处理。但由于它是一个空数组,它会给出异常。

但是我查看了 api 指南,没有方法可以检查 JSON 是空数组还是输入流中的下一个对象是对象还是数组结尾等。

谁能告诉我 GSON API 中存在任何此类方法。或者我们如何才能解决这个问题?

编辑:我已经修改了从服务器获得的响应。

4

1 回答 1

1

您已经在使用适当的方法。这是JsonReader 类文档JsonReader.hasNext()中描述的方法:

在数组处理方法中,首先调用 beginArray() 以使用数组的左括号。然后创建一个累加值的 while 循环,当 hasNext() 为 false 时终止。最后,通过调用 endArray() 读取数组的右括号。

您只需要从 do/while 切换到 while 循环。您当前的代码要求数组中始终至少有一个对象,因为 do/while 直到循环结束才检查条件。

于 2013-04-15T04:51:36.097 回答