2017-07-12 3 views
-1

実際にはjsonが8ビットにfloat値を格納することしかできないので、どのように動作するのかわかりません。JSONObject put (String name, long value)もちろん、大きな数字を格納することはできますが、数字が大きくなるほど、jsonに格納される値はより正確になります。例えば、18,446,744,073,709,551,614の値を8ビット浮動小数点で格納することはできません。値を取得しようとすると、18,446,744,073,700,000,000のようになります。JSONObject put(String name、long value)がint64値をjsonに格納する可能性はありますか?

私は好奇心が強いので、JSONObject put(String name、long値)?

答えて

0

あなたの前提は正しくありません。 JSONの数字の長さに制限はありません。制限はさまざまな実装にあります。例えば、javascriptと呼ばれるabominatinは浮動小数点数に制限されています(整数なしのプログラミング言語、いいアイデアです!)。アンドロイドのJSONObjectは長い整数値の格納や取得に問題はありません。

+0

私は理解しますが、完全ではありません。なぜなら、jsonのテキストファイルでは、値が浮動小数点、整数またはint64かどうかを示すフラグがないからです。例1234はそれらのすべてである可能性があります。では、jsonをファイルに保存して後で再度ロードすると、どのように動作するのですか? – loki

+0

再び、これはインプリメンテーションに依存します。 Android JSONObjectの実装では、解析型の値を整数型(long型またはint型の場合はint型)として単純に解析します。失敗した場合はdouble型として解析し、失敗した場合はunquoted型の文字列として扱います。 – Okas

関連する問題