Sto usando gson per convertire una stringa json in un oggetto Java. Il valore di risultato2 corrisponde esattamente al valore di risultato1. (Copiato da debugger; Backslashs aggiunto)gson lancia MalformedJsonException
La seguente eccezione viene generata result1 durante la conversione: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Si ritiene EOF alla riga 1 colonna 170
Conversione result2 funziona correttamente.
La stringa json è valida in base a jsonlint.com.
public static Userinfo getUserinfo()
{
String result1 = http.POST("https://www.bitstamp.net/api/balance/",
postdata, true);
String result2 = "{\"btc_reserved\": \"0\", \"fee\": \"0.5000\", \"btc_available\": \"0.10000000\", \"usd_reserved\": \"0\", \"btc_balance\": \"0.10000000\", \"usd_balance\": \"30.00\", \"usd_available\": \"30.00\"}";
Gson gson = new Gson();
Userinfo userinfo1 = gson.fromJson(result1, Userinfo.class); //throws Exception
Userinfo userinfo2 = gson.fromJson(result2, Userinfo.class); //works fine
return userinfo1;
}
private class Userinfo {
public Userinfo(){
}
public float usd_balance;
public float btc_balance ;
public float usd_reserved;
public float btc_reserved;
public float usd_available;
public float btc_available;
public float fee;
public float last_update;
}
Grazie! La mia classe HTTP ha scaricato la stringa json in un buffer char da 256 byte che è stato poi convertito in una stringa (result1).Per questo motivo, risultato1 aveva una lunghezza di 255 anziché di 169. – Non
Ho avuto lo stesso problema; l'intera faccenda EOF nel tipo di eccezione mi ha gettato, il mio problema era semplicemente JSON, formato in modo semplice e puro. – Kong
Ho avuto lo stesso problema, ma ho ottenuto il mio JSON tramite un FileChannel. Ero abbastanza sicuro che la codifica fosse a posto. Quello che ho fatto è stato chiamare il metodo trim() sulla stringa rossa dal file su HDD, questo ha risolto il problema. –