1

我目前正在使用JSON Simple库在我的应用程序中解析 JSON。我在解析时遇到了一个引发以下错误的问题:

java.lang.NumberFormatException: For input string: "107701583138930170002"

我已将其缩小到我认为是问题的范围,这个数字太大而不能成为 LONG 类型。问题是我无法控制这个数字,否则我会把它变成一个字符串。有没有办法让 JSON Simple 将其解析为 BigInt 而不是 LONG?

4

2 回答 2

0

如果您正在使用 Json Simple 的流解析器,您实际上可以将您的 json simple ContentHandler 与 jackson 一起使用,而且麻烦相对较少。我为我的 jsonj 项目做了这个:https ://github.com/jillesvangurp/jsonj/blob/master/src/main/java/com/github/jsonj/tools/JsonParserNg.java这是 JsonParser.java 的替代品在使用 jackson 而不是 jsonsimple 来驱动 json 简单处理程序的同一包中。

jackson 解析器支持 BigInteger。我上面链接的类中的关键方法只是在 switch 语句中调用适当的 jsonsimple 处理程序方法。在我调用 parser.getLongValue() 的地方,您可以改为调用 parser.getBigIntegerValue()

于 2014-06-06T08:27:54.020 回答
0

自 2009 年以来,可从 Google Code 下载的 json-simple 包似乎没有更新。如果您查看github,2011 年 11 月有一个提交添加了对Long范围之外的数字的支持。

您可能必须从 github 获取源代码并构建该库的更新版本。看起来 json-simple 没有得到维护。

于 2014-06-05T16:01:21.900 回答