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