【问题标题】:exceeding LONG.MAX_VALUE in JSON Simple parser在 JSON 简单解析器中超过 LONG.MAX_VALUE
【发布时间】:2014-06-05 15:17:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: java json json-simple


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您使用的是 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 简单处理程序。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 2017-09-21
        • 1970-01-01
        • 2015-01-29
        • 1970-01-01
        • 1970-01-01
        • 2017-09-07
        相关资源
        最近更新 更多