Java gson抛出MalformedJsonException

我正在使用gson将json字符串转换为Java对象。值RESULT2是完全一样的值RESULT1。(从调试器复制;添加了反斜杠)

转换result1时会引发以下异常: com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期的EOF在第1行的第170列

转换result2效果很好。

json字符串根据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;

}

回答:

GSON抛出特定的错误是没有空白的对象结束后,当有额外的字符,它定义空白非常狭窄(如JSON规格一样) -只是\t,\n,\r,和空间算作空白。特别要注意的是,尾随NUL(\0)字符不算作空格,并且会导致此错误。

如果你不容易弄清到底是什么导致多余的字符并消除它们,另一种选择是告诉GSON以宽大的模式进行解析:

Gson gson = new Gson();

JsonReader reader = new JsonReader(new StringReader(result1));

reader.setLenient(true);

Userinfo userinfo1 = gson.fromJson(reader, Userinfo.class);

以上是 Java gson抛出MalformedJsonException 的全部内容, 来源链接: utcz.com/qa/407171.html

回到顶部