gsonjson文字列をJavaオブジェクトに変換しています。 の結果2の値は、の結果1の値とまったく同じです。 (デバッガからコピー; Backslashsを添加)結果1を変換しながら、次の例外がスローされgson throw MalformedJsonException
を: com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:行1列170
で予想EOFを結果2が正常に動作します。
jsonlint.comによると、json文字列は有効です。
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;
}
ありがとうございました!私のHTTPクラスは、文字列(result1)に変換された256バイトのcharバッファにjson文字列をダウンロードしました。そのため、result1の長さは169ではなく255になりました。 – Non
同じ問題がありました。例外的な種類のEOFの事が私を投げ捨てました。私の問題は単なる純粋でシンプルなJSONでした。 – Kong
同じ問題がありましたが、FileChannel経由でJSONを取得しました。私はエンコードが正当だったと確信していました。私がやったのは、HDD上のファイルから赤色の文字列に対してtrim()メソッドを呼び出すことでしたが、これが問題を解決しました。 –