Gson發生錯誤訊息: JsonParseException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT
這個算是剛開始用Gson的時候很容易發生的問題, 這個錯誤訊息是在告訴你:API 回傳的結果是JSON的Array結構,但你的程式卻寫為處理Object結構。 首先看一下你的API回傳的格式,以下列的API為例: https://jsonplaceholder.typicode.com/users 回傳的結果為: 從API的回傳結果可以看得出來,最外層是用Array包住,所以如果程式如同下列使用Object包覆的方式撰寫, (下列使用Kotlin的語法撰寫, response為API回傳後的結果) val gson = Gson() val type = object : TypeToken<UserGson>() {}.type val user = gson.fromJson<UserGson>(response,type) 就會出現 JsonParseException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT 所以只要將程式改寫為用ArrayList去包住Gson的資料物件,即可解決這個錯誤 val gson = Gson() val type = object : TypeToken<ArrayList<UserGson>>() {}.type val users = gson.fromJson<ArrayList<UserGson>>(response, type) 範例程式碼: https://github.com/ukyo99999/gsonexample Reference: https://github.com/google/gson/blob/master/UserGuide.md https://stackoverflow.com/questions/9598707/gson-thro...