私の応答には、英単語の音節(例:ri、pe ritri "eɪʃʌn)のような特殊文字が含まれていますが、gsonはそれらを解析できず、例外をスローします Expected begin_object but was string at line 1 column 199 path $
エラーメッセージ。私は以下のカスタムデシリアライザを書くことでutf-8でレスポンスをエンコードしようとしましたが、うまくいきませんでした。それはすぐに終了します gson.fromJson()
が呼び出されます。
public class WordResponseDeserializer implements JsonDeserializer<Define> {
@Override
public Define deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
Log.d(getClass().getSimpleName(), "In Deserialize");
Gson gson = new Gson();
String string = json.toString();
byte[] bytes = string.getBytes();
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class); //Crashing here
return gDefine;
}
}
Gsonはこれらの特殊文字を解析できますか?可能な方法は何ですか?
回答:
回答№1は0コードのこの部分を変更します。
byte[] bytes = string.getBytes();
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class); //Crashing here
これとともに:
byte[] bytes = string.getBytes("ISO-8859-1");
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class);