这是我的对象
{
"Id":12345,
"some":1,
"xCoord":248.0000,
"yCoord":369.0000
}
无论出于何种原因,xVal和yVal被反序列化为“0.0”。我该如何解决这个问题?我需要漂浮。
我的模特只是一个POJO
class MyClass{
private int id;
private int some;
private double xCoord;//or float, neither works; I prefer float
private double yCoord;
...//other fields
}
除float或double xVal yVal
外,所有其他字段都可以正常工作我的Gson实例也是
sGsonUpperCamelCase = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.registerTypeAdapterFactory(typeFactory).create();
typeFactory
不是针对此POJO,而是针对其他一些POJO,这些都可以正常运行。无论如何,我的整个系统一切正常,除了这个对象的浮点/双字段。
答案 0 :(得分:0)
您的问题是方法setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
。
使用此策略,Gson希望Json字段的名称为XCoord
和YCoord
,以大写字母开头。这意味着Java字段xCoord
从Json字段XCoord
获取值,但由于该字段不存在,其值默认为0.0
。
所以你有两个选择:
如果您在任何地方都不需要,请移除setFieldNamingPolicy()
。虽然看起来你依赖于字段id
。
将Json字段重命名为XCoord
和YCoord
。