首頁 > Java > java教程 > 主體

為什麼 Gson 會拋出'預期是 BEGIN_ARRAY 但實際上是 BEGIN_OBJECT”以及如何修復它?

Linda Hamilton
發布: 2024-10-26 17:25:03
原創
483 人瀏覽過

Why Does Gson Throw

預期為BEGIN_ARRAY,但在第1 行第2 列為BEGIN_OBJECT

嘗試使用Gson 解析JSON 時,可能會出現錯誤,指示:「 com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:預期為BEGIN_ARRAY,但實際為BEGIN_OBJECT。」此錯誤表示JSON 資料的預期格式與接收到的資料的實際結構不符。

此問題的根本原因在於以下兩行程式碼之間的差異:

List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));
登入後複製

此程式碼嘗試將JSON 反序列化為Post 物件數組,期望JSON 格式為[{" timeZoneId": ...}, ...]。但是,提供的 JSON 是一個對象,而不是數組,這可以透過「{」和「}」分隔符號的存在來證明。

要修正此錯誤,需要修改程式碼以正確解析JSON 作為單一 Post 物件。將上面提到的行替換為以下內容:

Post post = gson.fromJson(reader, Post.class);
登入後複製

透過此調整,Gson 會將 JSON 反序列化為單一 Post 對象,解決 Expected BEGIN_ARRAY but was BEGIN_OBJECT 錯誤。請注意,它假定 JSON 符合 Post 類別中定義的結構,並帶有 timeZoneId 欄位。如果 JSON 包含其他或不同的字段,則程式碼可能需要進一步修改才能正確處理它們。

以上是為什麼 Gson 會拋出'預期是 BEGIN_ARRAY 但實際上是 BEGIN_OBJECT”以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!