我错误地将我的代码中的json字段"mileage":0.0"
解析为int
。它已成功解析,直到值为0.0
。但是,只要json字段的值从0.0
变为任何其他值,我就开始获得 JsonFormatException 。我正在使用 Gson 来解析我的应用程序中的json。所以我的问题是为什么当值为0.0
时没有抛出异常,因为它仍然是浮动的?
答案 0 :(得分:2)
Gson的工作原理取决于你如何进行反序列化。我打赌你打算让它自动进行反序列化,可能是由quiz_flag
注释驱动的。所以,让我们假设你有一些类似这样的课程:
@SerializedName
当Gson将文本反序列化为对象的实例时,它会“尽力而为”#34;给你你想要的。这包括将某些值从一种类型强制转换为另一种类型。对于如上所述的类设置,Gson不仅会成功强制@SerializedName("val")
private int myValue;
加入0.0
,还会成功将0
(一个字符串)强制转换为"1.0"
。
当强制行为不可能时,你只能获得1
&#34 ;;只要您有Exception
或0.1
,Gson就知道它无法将该值表示为"1.5"
,因此会引发异常。
请注意,这适用于两个方向。如果您的json包含整数(例如int
)但您的类声明{"val":3}
,则Gson会成功将该数字强制转换为private String myValue
。