1

現在、アプリケーションで JSON を解析するためにJSON Simpleライブラリを使用しています。解析中に次のエラーがスローされるという問題が発生しました。

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

私はこれを問題と思われるものに絞り込みました。数が大きすぎて LONG タイプにはなりません。問題は、この数値を制御できないことです。それ以外の場合は、文字列にします。JSON Simple でこれを LONG ではなく BigInt に解析する方法はありますか?

4

2 に答える 2

0

Json Simple のストリーミング パーサーを使用している場合は、json のシンプルな ContentHandler を jackson でも比較的問題なく使用できます。私は自分のjsonjプロジェクトのためにこれを行いました:https://github.com/jillesvangurp/jsonj/blob/master/src/main/java/com/github/jsonj/tools/JsonParserNg.java jsonsimple の代わりに jackson を使用して json simple ハンドラーを駆動する同じパッケージ内。

jackson パーサーは BigInteger をサポートしています。上でリンクしたクラスのキー メソッドは、switch ステートメントで適切な jsonsimple ハンドラー メソッドを呼び出すだけです。私が parser.getLongValue() を呼び出している場所では、代わりに parser.getBigIntegerValue() を呼び出すことができます。

于 2014-06-06T08:27:54.020 に答える
0

Google コードからダウンロードできる json-simple パッケージは、2009 年以降更新されていないようです。githubLongを見ると、2011 年 11 月に、範囲外の数値のサポートを追加するコミットがありました。

おそらく、github からソースを取得し、最新バージョンのライブラリをビルドする必要があります。json-simple がメンテナンスされていないようです。

于 2014-06-05T16:01:21.900 に答える