/ / Gson + Retrofit2: parse Sonderzeichen - Android, Codierung, Zeichencodierung, Gson, Retrofit2

gson + Retrofit2: parse Sonderzeichen - Android, Codierung, Zeichencodierung, Gson, Retrofit2

Meine Antwort enthält Sonderzeichen wie englische Wortsilben (z. B. ri, peɪtri "eɪʃʌn), die gson sie nicht parsen kann und Ausnahmen auslöst Expected begin_object but was string at line 1 column 199 path $ Fehlermeldung. Ich habe versucht, die Antwort mit utf-8 zu codieren, indem ich unter Custom Deserializer geschrieben habe, aber nicht funktioniert hat. Es wird sofort beendet, wenn gson.fromJson() wird genannt.

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;
}
}

Kann Gson diese Sonderzeichen analysieren? Was ist der mögliche Weg?

Antworten:

0 für die Antwort № 1

Ändern Sie diesen Teil des Codes:

byte[] bytes = string.getBytes();
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class); //Crashing here

mit diesem:

byte[] bytes = string.getBytes("ISO-8859-1");
String enString = new String(bytes, Charset.forName("utf-8"));
Define gDefine = gson.fromJson(enString, Define.class);