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 クラス構造を変更する必要がある場合があります。以下は注意が必要な変更です:
UTF-8 Handling
サーバーから受信している JSON 応答が UTF-8 として適切にフォーマットされていることを確認してください。 HTTP 応答に MIME タイプ ヘッダーを追加して、正しいエンコードを指定できます。たとえば、
responseToClient.setContentType("application/json; charset=utf-8");
これらの変更を考慮すると、Android アプリケーションで GSON を使用して JSON データを正常に解析できるはずです。
以上がJSON 構造に予期しないルート オブジェクトがある場合に、Android の GSON で JSON 解析エラーをトラブルシューティングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。