我使用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中存在这样的方法吗?或者我们怎样才能克服这个问题?
编辑:我修改了从服务器获得的响应。
发布于 2013-04-15 04:51:36
您已经在使用适当的方法了。它是JsonReader.hasNext()方法,如JsonReader类文档中所描述的
在数组处理方法中,首先调用beginArray()来使用数组的开始括号。然后创建一个while循环,它累加值,当hasNext()为false时终止。最后,通过调用endArray()读取数组的结束括号。
您只需从do/while切换到while循环即可。当前代码要求数组中始终至少有一个对象,因为do/while在循环结束前不会检查条件。
https://stackoverflow.com/questions/15965179
复制相似问题