一,项目场景:
如下图,在传输过程中报错。解决方法如下:
二,问题描述
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING
三,原因分析:
原因是Json解析的错误。报错位置为:
将json字符串转换成UserBean对象
results对应的应该是一个实体类,如果这个时候想把他解析为String或者List就会出现异常。
原因归根结底接受JSON的格式错误,我初步怀疑为编码格式,因为之前我的电脑在utf-8和GBK格式来回切换,给编译器干歇菜了,结果不是编码格式传输问题。
检查JSON数据规范即可。
四,解决方案:
这里的问题是:
用户端解释有json格式转换。将user对象转换成字符串,结果,服务端这边传输格式为String,所以,理所当然的报错了。
主要的还是检查JSON格式,规范等。
解决代码如下:
Gson gson=new Gson();
String data=gson.toJson(user);//将user对象转换成字符串
System.out.println("json字符串:"+data);
json字符串:{“username”:“2”,“password”:“5”}
再次传输,成功解决。