2014-06-05 36 views
0

我目前使用JSON Simple库来解析我的应用程序中的JSON。我已经在分析被抛出下面的错误遇到一个问题:JSON中超过LONG.MAX_VALUE简单解析器

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

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

回答

0

从Google代码下载的json-simple软件包自2009年以来似乎没有更新。如果您在github上看起来2011年11月提交了一个提交,它支持Long范围之外的数字。

您可能需要从github获取源代码并构建更新版本的库。看起来json-simple没有被维护。

0

如果您使用的是Json Simple的流式解析器,那么您实际上可以将json简单的ContentHandler与jackson结合使用,而且麻烦相对较小。我为我的jsonj项目做了这样的工作:https://github.com/jillesvangurp/jsonj/blob/master/src/main/java/com/github/jsonj/tools/JsonParserNg.java这是JsonParser.java的替代品,它使用jackson而不是jsonsimple来驱动json简单处理程序。

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