2014-06-05 38 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()