我目前使用JSON Simple庫來解析我的應用程序中的JSON。我已經在分析被拋出下面的錯誤遇到一個問題:JSON中超過LONG.MAX_VALUE簡單解析器
java.lang.NumberFormatException: For input string: "107701583138930170002"
我已經縮小下來到了我認爲是問題,數量是大是一個長期的類型。問題是我無法控制這個數字,否則我會把它變成一個字符串。有沒有辦法讓JSON Simple將它解析成BigInt而不是LONG?
我目前使用JSON Simple庫來解析我的應用程序中的JSON。我已經在分析被拋出下面的錯誤遇到一個問題:JSON中超過LONG.MAX_VALUE簡單解析器
java.lang.NumberFormatException: For input string: "107701583138930170002"
我已經縮小下來到了我認爲是問題,數量是大是一個長期的類型。問題是我無法控制這個數字,否則我會把它變成一個字符串。有沒有辦法讓JSON Simple將它解析成BigInt而不是LONG?
從Google代碼下載的json-simple軟件包自2009年以來似乎沒有更新。如果您在github上看起來2011年11月提交了一個提交,它支持Long
範圍之外的數字。
您可能需要從github獲取源代碼並構建更新版本的庫。看起來json-simple沒有被維護。
如果您使用的是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()