jsonフィールドを正しく解析しません:"mileage":0.0"
をコード内でint
に解析しました。値が0.0
になるまで正常に解析されました。しかし、jsonフィールドの値が0.0
から他の値に変更されるとすぐに、私はJsonFormatExceptionを取得し始めました。私はGsonを使ってアプリケーションでjsonを解析しています。だから私の質問はなぜ値が0.0
だったのに例外がスローされなかったのですか?Gsonがintとしてfloatを解析します
0
A
答えて
2
Gsonがどのように動作するかは、デシリアライズの仕方によって異なります。 @SerializedName
注釈によって駆動される可能性が高いので、自動的にデシリアライズを実行するようにしています。それでは、あなたはそれでこのようなもので、いくつかのクラスがあると仮定してみましょう:
@SerializedName("val")
private int myValue;
Gsonはあなたのオブジェクトのインスタンスにテキストをデシリアライズするとき、それはあなたが望むものをあなたに与えるために、「最善を尽くし」します。これには、あるタイプから別のタイプへのいくつかの値の強制変換が含まれます。上のように設定されたクラスの場合、Gsonは0
に0.0
を首尾よく強制するだけでなく、"1.0"
(文字列)を1
に変換することに成功します。
強制が「不可能」のときは、Exception
しか得られません。 0.1
または"1.5"
を持ってすぐに、Gsonはその値をint
として表すことができないと知っているので、例外がスローされます。
これは両方向で機能することに注意してください。あなたのjsonに整数(たとえば{"val":3}
)が含まれていて、クラスがprivate String myValue
と宣言している場合、Gsonは数字を"3"
に強制的に変換します。
関連する問題
- 1. POJOなしでGsonとJsonを解析しますか?
- 2. RetrofitとGsonを使用してJsonデータを解析する
- 3. floatまたはintとして入力
- 4. Gsonがカスタムフィールドを解析する方法
- 5. GsonとJsonObjectを使用してデータをフォーマットして解析する
- 6. Java - GsonがIntegerをDoubleとして解析するのはなぜですか?
- 7. 科学記法はintまたはfloatとして解釈されますか?
- 8. pandas.read_csv()float解析の理解
- 9. シリアルポート経由でデータを入力します。ビットをintやfloatなどの型に解析します。
- 10. intとoutput floatを使用して計算しますか?
- 11. GSONを使用してJSONを解析する方法は?
- 12. gsonを使用して動的キーでオブジェクトを解析する
- 13. GSONを使用してJSONを解析する方法
- 14. GSONを使用してJSONObjectデータを取得/解析する
- 15. GSONを使用して長いJSONを解析する
- 16. 1つのキーに対してGSON解析をオーバーライドする
- 17. Java - Gsonの解析が入れ子になっています
- 18. scala gson配列の解析
- 19. アンドロイドGson解析リストのフィールド
- 20. GSONはBegin_objectを期待しますが、私はJSONオブジェクトを解析しようとしている
- 21. floatをintにキャストするか、intをfloatにキャストしますか?
- 22. JSON配列とGSONを使用したサブ配列の解析
- 23. int to float/float
- 24. GSONでJSONを解析してVolleyを使用してエラーを取得する
- 25. GSONを使用してandroidで動的 "key"と "value"を解析する
- 26. JSONエラーを解析するGson?
- 27. 動的JSONフィールドを解析するGSON
- 28. GSON with ObservableFieldを解析する
- 29. GSON - 解析例外を無視する
- 30. JavaでJSONを解析するGson
おそらく0.0は整数として正確に表現できるからです。 –
@GabeSechanどういう意味ですか? – Harry
0.0 = 0は整数です。ここで、0.1は整数ではありません。 –