天天看點

【bug解決】java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING

一,項目場景:

如下圖,在傳輸過程中報錯。解決方法如下:

【bug解決】java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING

二,問題描述

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”}