gpt4 book ai didi

java - gson 抛出 MalformedJsonException

转载 作者:行者123 更新时间:2023-12-01 19:24:24 27 4
gpt4 key购买 nike

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

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

转换result2效果很好。

根据 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;
}

最佳答案

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

当对象末尾后面有非空白的额外字符时,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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59324413/

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