Gson将float解析为int

时间:2017-09-16 17:45:17

标签: java android json gson

我错误地将我的代码中的json字段"mileage":0.0"解析为int。它已成功解析,直到值为0.0。但是,只要json字段的值从0.0变为任何其他值,我就开始获得 JsonFormatException 。我正在使用 Gson 来解析我的应用程序中的json。所以我的问题是为什么当值为0.0时没有抛出异常,因为它仍然是浮动的?

1 个答案:

答案 0 :(得分:2)

Gson的工作原理取决于你如何进行反序列化。我打赌你打算让它自动进行反序列化,可能是由quiz_flag注释驱动的。所以,让我们假设你有一些类似这样的课程:

@SerializedName

当Gson将文本反序列化为对象的实例时,它会“尽力而为”#34;给你你想要的。这包括将某些值从一种类型强制转换为另一种类型。对于如上所述的类设置,Gson不仅会成功强制@SerializedName("val") private int myValue; 加入0.0,还会成功将0(一个字符串)强制转换为"1.0"

当强制行为不可能时,你只能获得1&#34 ;;只要您有Exception0.1,Gson就知道它无法将该值表示为"1.5",因此会引发异常。

请注意,这适用于两个方向。如果您的json包含整数(例如int)但您的类声明{"val":3},则Gson会成功将该数字强制转换为private String myValue