ホームページ  >  記事  >  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>

データ クラス構造の変更

さらに、JSON 構造と一致するように GsonParse クラス構造を変更する必要がある場合があります。以下は注意が必要な変更です:

  1. プライベート文字列カウントの名前を変更します。 JSON の「count」は数値であるため、private int count; に変更します。
  2. private String Colbreak; の名前を変更します。 private int Colbreak へ;同じ理由です。
  3. ゲッター メソッドとセッター メソッドの名前を適宜変更します (例: getString と setString の代わりに getCount と setCount)。
  4. プライベート リスト を変更します。 mWords = new ArrayList();プライベートリストへmWords = new ArrayList(); (単数形の「Word」クラス名に注意してください)。
  5. Word クラス構造と getter/setter メソッドも同様に更新します。

UTF-8 Handling

サーバーから受信している JSON 応答が UTF-8 として適切にフォーマットされていることを確認してください。 HTTP 応答に MIME タイプ ヘッダーを追加して、正しいエンコードを指定できます。たとえば、

responseToClient.setContentType("application/json; charset=utf-8");

これらの変更を考慮すると、Android アプリケーションで GSON を使用して JSON データを正常に解析できるはずです。

以上がJSON 構造に予期しないルート オブジェクトがある場合に、Android の GSON で JSON 解析エラーをトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。