首頁 >Java >java教程 >為什麼我在解析 JSON 資料時收到「JSON 語法錯誤:預期為 BEGIN_ARRAY 但為 BEGIN_OBJECT」錯誤?

為什麼我在解析 JSON 資料時收到「JSON 語法錯誤:預期為 BEGIN_ARRAY 但為 BEGIN_OBJECT」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-27 11:50:30709瀏覽

Why am I getting a

JSON 語法錯誤:預期為BEGIN_ARRAY 但為BEGIN_OBJECT

JSON 解析器在解析JSON 資料時遇到錯誤,表示JSON SON間不匹配預期結構和實際結構。

問題:

錯誤訊息「預期BEGIN_ARRAY 但在第1 行第2 列為BEGIN_OBJECT」表示解析器期望數組結構( BEGIN_ARRAY)在JSON 資料中,但它遇到了物件結構(BEGIN_OBJECT)。這種不匹配可能會導致解析器失敗並引發異常。

伺服器 URL 和請求:

提供的程式碼片段對 URL 執行 HTTP POST 請求並檢索它的回應。 URL 設定為從遠端伺服器檢索 JSON 資料。

Post 類別:

Post 類別定義預期資料數組中每個物件的結構。但是,如錯誤訊息所示,伺服器傳回的不是物件數組,而是單一物件。

解決方案:

程式碼需要一個陣列發布物件但接收單一物件。要解決此問題,請修改程式碼以將回應解釋為單一Post 物件而不是陣列:

<code class="java">Post post = gson.fromJson(reader, Post.class);</code>

透過將

<code class="java">List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));</code>

替換為上面的行,程式碼將正確將JSON 回應解釋為單一Post 對象,解決了「預期BEGIN_ARRAY 但實際上是BEGIN_OBJECT」錯誤。

以上是為什麼我在解析 JSON 資料時收到「JSON 語法錯誤:預期為 BEGIN_ARRAY 但為 BEGIN_OBJECT」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn