Java使用 gson 解析出现的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java使用 gson 解析出现的错误相关的知识,希望对你有一定的参考价值。

错误:Expected BEGIN_ARRAY but was BEGIN_OBJECT
Json数据是:
"results":[
"createdAt":"2016-11-05 13:10:21","matchU1":"K2","objectId":"37T5444G","state":false,"updatedAt":"2016-11-05 13:23:09",
"createdAt":"2016-11-05 13:10:36","matchU1":"12","objectId":"1pPvDDDE","state":false,"updatedAt":"2016-11-05 13:10:39",
"createdAt":"2016-11-05 13:10:52","matchU1":"1","objectId":"0nSfhhhn","state":false,"updatedAt":"2016-11-05 13:23:02"]
JavaBean是:
public class Results
private String matchU1;
private String matchU2;
private Boolean match1;
private Boolean match2;
private Boolean state;
private String objectId;
get\set方法省略

然后gson是:
Gson gson=new Gson();
List<Results> ps = gson.fromJson(str, new TypeToken<List<Results>>().getType());
会报错 应该怎么修改?

你的json数据是{result:[]}这种格式的对象并不是数组 ,所以他会报错
用Result ps = ... 试试。
参考技术A 应该是你的javaBean写错了追问

JavaBean要怎么写呢?

追答

json数据解析的时候,写javaBean中的字段,你可以少写一些字段,但是不能多写,多写了就会报错;你当中的
private Boolean match2;
private String matchU2;
这两个字段没有的吧,你去解析当然会错
还有就是你前面为啥要用boolean类型呢?

追问

不能多写啊 因为有的列目前没有数据返回 以后可能会有。另外确实是boolean类型啊,返回的是false不是“false”。还有我觉得问题在于返回的数据是个数组

追答

抱歉前面没看清楚,你这样写是错的,应为你这样写只是一个对象,而JSON数据里面是一个数组里面是好几个对象的集合,所以你要写两个javaBean,前面一个的类型应该为一个集合类型,里面存的是Results类型的对象

追问

终于成功了!

本回答被提问者采纳

以上是关于Java使用 gson 解析出现的错误的主要内容,如果未能解决你的问题,请参考以下文章

FastJson 解析错误问题查找

java怎么使用gson解析json字符串

Could not find class com.google.gson.Gson

JAVA问题:JAVA连接数据库,出现错误,如图所示: 怎么回事?怎么解决?

Java Android Studio - 使用 Android 10 的物理设备上出现无法解析的日期错误

gson解析错误