在用Gson解析如下Json的时候
String jsonStr = "{code:403,msg:无查询好友信息,result:[]}";
解析代码为:
Gson son = new Gson();
MessageInfo info = son.fromJson(jsonStr, MessageInfo.class);
System.out.println(info.getCode());
System.out.println(info.getResult());
System.out.println(info.getMsg());
MessageInfo.java
private int code;
private String msg;
private Result result;
result为空的时候,就会出现异常
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 31
望大神帮下忙,解决下,这个怎么来解析
你应该做的是尝试的去解析,那肯定是 try catch 啊,因为当你没有数据的时候,相当于你这个对象null的,会报出空指针异常的.
java 对json数据格式要求非常严格,比如msg,至少应该是==》msg:"无查询好友信息"。不然java是没办法解析的,最好的方式还是=>"msg":"无查询好友信息"
Result是什么类型?
在你返回的json中result:[]在gson中会以数组的形式来解析而你fromJson(jsonStr, MessageInfo.class)传入的是一个对象数据这样gson肯定就抛错了。
解决办法:对返回数据进行判断一下 或者 让服务器返回null形式。