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中文網其他相關文章!