android報錯 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
我在使用retrofit和Gson配合時,出現了這個問題,疑惑中亂七八糟瞎搞了一個下午沒有解決。期間懷疑Gson解析不能使用泛型(因為我的解析使用了泛型),後來又覺得可能是我的關鍵字正好是解析器的某個關鍵字導致的異常,也打算過自定義Gson的解析過程,其實這些都不是。
第二天才搞明白,真正的問題是我的資料結構有問題,或者說我的解析出現了問題。
例如下面Json字串:
{"code":1,"info":"success","results":{"id":"1","name":"hehe"}}
results對應的應該是一個實體類,如果這個時候想把他解析為String或者List就會出現異常。
如果參考使用GsonForm處理後的資料模型,幾乎不會出現問題;加入result後面的內容可能在請求時會因為某些原因會存在格式上的變化,這個時候就有出現該異常的風險。Gson中,關鍵字後面出現""引起來的內容將會被只認為是STRING,“{}”只被認為是類,“[]”只被認為是List,這個幾乎是強制性的。
就是說如果你的實體預計是獲取String的變數,但是關鍵字後面對應的卻出現了“{”或“[”,那麼這個轉換將被認為是錯誤的,丟擲異常。
解決辦法:後臺輸出穩定的Gson格式。
相關推薦
android報錯 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
我在使用retrofit和Gson配合時,出現了這個問題,疑惑中亂七八糟瞎搞了一個下午沒有解決。期間懷疑Gson解析不能使用泛型(因為我的解析使用了泛型),後來又覺得可能是我的關鍵字正好是解
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
我在使用retrofit和Gson配合時,出現了這個問題,疑惑中亂七八糟瞎搞了一個下午沒有解決。期間懷疑Gson解析不能使用泛型(因為我的解析使用了泛型),後來又覺得可能是我的關鍵字正
Gson 解析Json資料時候報錯: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
Gson報錯資訊如下:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 colum
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 1 path $ 解決辦法
使用AndroidStudio時電腦卡死,在我長按電源鍵強制關機再開啟電腦,開啟AndroidStudio。在我把專案匯入AVD或者實體手機時報錯 Caused by: com.google.gson.JsonSyntaxException: java.la
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path 解決辦法
返回資料解析錯誤 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGI
Expected BEGIN_OBJECT but was BEGIN_ARRARY at line 1 column 2 path$異常解決方法
[ { "id": 1, "name": "移動開發", "alias": "mobile" }, { "id"
retrofit請求報錯:Expected a string but was BEGIN_OBJECT at line 1 column 2 path $
Expected a string but was BEGIN_OBJECT at line 1 column 2 path $ 這樣的錯,意思就是我想幫你解析成String而你返回的資料是一個物件,解析不了 需要把返回的物件String 給成JsonObject就可以了 如:C
Expected a string but was BEGIN_OBJECT at line 1 column 2 path $(不讓retrofit2自動替我解析json)
Expected a string but was BEGIN_OBJECT at line 1 column 2 path $ 這樣的錯,意思就是我想幫你解析成String而你返回的資料是一個物件(什麼?我明明是想單純返回String啊) 哎,String也是物件啊。那
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was
可能的錯誤:1、bean類欄位型別和欄位名稱不一致。 2、伺服器訪問得到的字串不是純json前面有空格和回車等字元(難發現)。 3、如果訪問的json字串不是utf-8編碼時,用Gson解析會出這種問題,在日誌中列印會發現json的{}前面有亂碼字元,也需要注意一下。這是因
json.decoder.JSONDecodeError: Invalid control character at: line 1 column 3,python中str與json型別轉換報錯如何解
使用json轉: json資料保密,再此不展示。 # 判斷型別 print(type(str_json)) json_dump = json.loads(str_json) 報錯如下: json.decoder.JSONDecodeError: Invalid control cha
今天使用gson json字串轉物件的時候,一直報錯Unterminated object at line 1 column 14
我這邊的話。這個錯誤是因為json字串包含了特殊的字元。用這個在來轉換物件的時候,就會出現這種錯誤。我那邊有出現兩個一個是: 一個是/所以要把這些替換掉就可以了 //去掉特殊的字元 : /這些 String s=base.getData(); s=s.rep
logstash啟動報配置檔案錯誤Expected one of #, input, filter, output at line 1, column 1 (byte 1) after
執行環境:windows環境下在部署logstash到伺服器的時候遇到這個問題,就是配置檔案什麼的都寫好了執行,然後出錯如圖:然後根據提示去找配置檔案哪裡出現問題,配置檔案的圖如下:結果找了老半天沒發現錯誤,於是用命令:logstash -f ../config/logsta
android retrofit End of input at line 1 column 1 path
背景 在使用retrofit作為專案的網路請求庫時,介面定義如下: @GET(ACT_GET_NEW_STAFF) Call<TaskEn> reqGetNewStaff(); @GET(ACT_GET_NEW_STAFF_MORE) Call<Li
Gson 解析時候報錯 Expected BEGIN OBJECT but was BEGIN ARRAY at li
03-17 23:05:00.373 18335-18335/? E/AndroidRuntime: FATAL EXCEPTION: main03-17 23:05:00.373 18335-18335/? E/AndroidRuntime: Process: tech.an
springDataSolr報錯Expected mime type application/octet-stream but got text/html.
org.springframework.data.solr.UncategorizedSolrException: Expected mime type application/octet-stream but got text/html. Caused by: org.a
Android 報錯 Value br of type java.lang.String cannot be converted to JSONObject
博主是使用Android + php + apache + tomcat 做資料處理時出現的這個問題; 報錯內容:Value <br of type java.lang.String cannot be converted to JSONObject (因為CSDN文章標題不能有非法字
Gson 解析錯誤:Expected BEGIN_ARRAY but was BEGIN_OBJECT
解析錯誤: Expected BEGIN_ARRAY but was BEGIN_OBJECT { “msg”: “繫結成功!”, “code”: “0”, “data”: { “isbind”: “0”
spring boot+mybatis 多資料來源報錯 expected single matching bean but found
spring boot 多資料來源配置 No qualifying bean of type [javax.sql.DataSource] is defined: expected single matching bean but found 2: paymen
Android報錯:Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'
專案中遇到空指標異常 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Str
hive報錯: Specified key was too long; max key length is 767 bytes
character 修改表 The value user 整理 query 道理 並且 DataNucleus.Datastore (Log4JLogger.java:error(115)) - An exception was thrown while adding/v