


在 Android 中使用 GSON 解析 JSON 資料時,為什麼會出現「java.lang.IllegalStateException:預期 BEGIN_OBJECT 但在第 1 行第 73 列為 NAME」錯誤?
如何在Android 中使用GSON 解析JSON 資料:當錯誤解決
在Android 中使用GSON 解析JSON 資料時,可能會遇到以下錯誤:「java.lang.IllegalStateException:預期為BEGIN_OBJECT,但在第1 行第73 列為NAME。」此錯誤表示JSON 資料中存在語法問題,特別是缺少左大括號。
可能的解決方案
要解決此問題,請確保您的 JSON 資料正確格式化並包含左花括號和右花括號。例如:
<code class="json">{ "count": "12", "colbreak": 1, ... "seek": 0 }</code>
常見原因
此錯誤的一個常見原因是接收儲存在檔案中或作為字串從伺服器下載的 JSON 資料。在這種情況下,字串可能未正確編碼或添加前綴,這可能會導致解析錯誤。
自訂類別修改
在您的程式碼中,您正在使用 Java反射建立自訂類別 GsonParse 來表示 JSON 資料結構。一般不推薦這種方法。相反,為 GsonParse 中的每個欄位建立明確的 getter 和 setter 方法。此外,使用 @SerializedName 註解類別和欄位名稱以符合 JSON 屬性名稱。
以下範例:
<code class="java">public class GsonParse { @SerializedName("count") private String count; @SerializedName("colbreak") private String colbreak; @SerializedName("name") private String name; @SerializedName("score") private String score; @SerializedName("Words") private List<Words> mWords = new ArrayList<>(); @SerializedName("seek") private String seek; // Add getters and setters here... }</code>
UTF-8 編碼
確保您的 JSON 資料正確編碼為 UTF-8 格式。透過 HTTP 接收 JSON 資料時,伺服器應使用適當的 Content-Type 標頭來回應(例如「application/json; charset=utf-8」)。
改進的解析方法
這是解析方法的改良版本,它使用Reader:
<code class="java">public static <T> ArrayList<T> JsonParse(T t, Reader reader) { ArrayList<T> lcs = new ArrayList<>(); try { Gson gson = new Gson(); JsonReader jsonReader = new JsonReader(reader); jsonReader.beginObject(); while (jsonReader.hasNext()) { T cse = (T) gson.fromJson(jsonReader, t.getClass()); lcs.add(cse); } jsonReader.endObject(); jsonReader.close(); } catch (UnsupportedEncodingException | IOException e) { e.printStackTrace(); } return (ArrayList<T>) lcs; }</code>
用法用法
要使用此方法,請從來源(例如檔案或HTTP 回應)建立Reader 並將其傳遞給JsonParse 方法:<code class="java">InputStream ims = assetManager.open("file.txt"); Reader reader = new InputStreamReader(ims, "UTF-8"); ArrayList<GsonParse> gsonObjects = JsonParse(new GsonParse(), reader);</code>
以上是在 Android 中使用 GSON 解析 JSON 資料時,為什麼會出現「java.lang.IllegalStateException:預期 BEGIN_OBJECT 但在第 1 行第 73 列為 NAME」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文分析了2025年的前四個JavaScript框架(React,Angular,Vue,Susve),比較了它們的性能,可伸縮性和未來前景。 儘管由於強大的社區和生態系統,所有這些都保持占主導地位,但它們的相對人口

本文介紹了SnakeyAml中的CVE-2022-1471漏洞,這是一個允許遠程代碼執行的關鍵缺陷。 它詳細介紹瞭如何升級春季啟動應用程序到Snakeyaml 1.33或更高版本的降低風險,強調了依賴性更新

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

Node.js 20通過V8發動機改進可顯著提高性能,特別是更快的垃圾收集和I/O。 新功能包括更好的WebSembly支持和精製的調試工具,提高開發人員的生產率和應用速度。

本文探討了在黃瓜步驟之間共享數據的方法,比較方案上下文,全局變量,參數傳遞和數據結構。 它強調可維護性的最佳實踐,包括簡潔的上下文使用,描述性

本文使用lambda表達式,流API,方法參考和可選探索將功能編程集成到Java中。 它突出顯示了通過簡潔性和不變性改善代碼可讀性和可維護性等好處
