首頁  >  文章  >  Java  >  當 JSON 結構具有意外的根物件時,如何解決 Android 中 GSON 的 JSON 解析錯誤?

當 JSON 結構具有意外的根物件時,如何解決 Android 中 GSON 的 JSON 解析錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 17:14:02204瀏覽

How to troubleshoot JSON parsing errors with GSON in Android when the JSON structure has an unexpected root object?

在Android 中使用GSON 進行JSON 解析:故障排除

在嘗試使用GSON 解析JSON 資料時,您遇到了錯誤,原因是意外的JSON 結構。讓我們更深入地研究問題並提供解決方案。

您嘗試解析的 JSON 結構似乎有一個根對象,但您沒有正確使用 Gson 的 fromJson 方法來讀取其內容。另請注意,Gson 並非設計為直接處理 UTF-8 字元。

正確的解析方法

要解決該錯誤,您需要將解析方法修改為如下:

<code class="java">public static <T> ArrayList<T> JsonParse(T t, InputStream inputStream) {
    ArrayList<T> lcs = new ArrayList<>();
    try (JsonReader reader = new JsonReader(new InputStreamReader(inputStream, "UTF8"))) {
        reader.beginObject();
        while (reader.hasNext()) {
            T cse = (T) gson.fromJson(reader, t.getClass());
            lcs.add(cse);
        }
        reader.endObject();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return (ArrayList<T>) lcs;
}</code>

修改資料:

修改資料:
  1. 修改資料類別結構
  2. 此外,您可能需要修改GsonParse 類別結構以符合JSON 結構。以下是需要注意的改動:
  3. 重新命名私有字串計數;改為 private int count;,因為 JSON 中的「count」是一個數值。
重新命名 private String colbreak;私有 int colbreak;同樣的原因。

相應地重新命名 getter 和 setter 方法(例如,getCount 和 setCount 而不是 getString 和 setString)。

更改 private List mWords = new ArrayList();到私人清單 mWords = new ArrayList(); (注意單數「Word」類別名稱)。

以類似方式更新 Word 類別結構和 getter/setter 方法。
responseToClient.setContentType("application/json; charset=utf-8");

UTF-8 處理確保您從伺服器收到的 JSON 回應格式正確為 UTF-8。您可以在 HTTP 回應中新增 MIME 類型標頭來指定正確的編碼,例如:透過考慮這些修改,您應該能夠在 Android 應用程式中使用 GSON 成功解析 JSON 資料。

以上是當 JSON 結構具有意外的根物件時,如何解決 Android 中 GSON 的 JSON 解析錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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