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());
会报错 应该怎么修改?
用Result ps = ... 试试。 参考技术A 应该是你的javaBean写错了追问
JavaBean要怎么写呢?
追答json数据解析的时候,写javaBean中的字段,你可以少写一些字段,但是不能多写,多写了就会报错;你当中的
private Boolean match2;
private String matchU2;
这两个字段没有的吧,你去解析当然会错
还有就是你前面为啥要用boolean类型呢?
不能多写啊 因为有的列目前没有数据返回 以后可能会有。另外确实是boolean类型啊,返回的是false不是“false”。还有我觉得问题在于返回的数据是个数组
追答抱歉前面没看清楚,你这样写是错的,应为你这样写只是一个对象,而JSON数据里面是一个数组里面是好几个对象的集合,所以你要写两个javaBean,前面一个的类型应该为一个集合类型,里面存的是Results类型的对象
追问终于成功了!
本回答被提问者采纳以上是关于Java使用 gson 解析出现的错误的主要内容,如果未能解决你的问题,请参考以下文章
Could not find class com.google.gson.Gson
JAVA问题:JAVA连接数据库,出现错误,如图所示: 怎么回事?怎么解决?