gpt4 book ai didi

java - gson 抛出 MalformedJsonException

转载 作者:IT老高 更新时间:2023-10-28 12:43:54 26 4
gpt4 key购买 nike

我正在使用 gsonjson 字符串转换为 Java-Object。result2 的值与result1 的值完全相同。 (从调试器复制;添加了反斜杠)

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

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

最佳答案

我怀疑 result1 的末尾有一些字符,您在调试器中看不到关闭 } 字符之后的字符。 result1result2 的长度是多少?我会注意到您引用的 result2 有 169 个字符。

当对象末尾有非空格的额外字符时,GSON 会抛出该特定错误,并且它定义空格 very 狭义(如 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com