这是我的对象
{
"Id":12345,
"some":1,
"xCoord":248.0000,
"yCoord":369.0000
}
无论出于何种原因,xVal 和 yVal 都被反序列化为“0.0”。我该如何解决这个问题?我需要 float 。
我的模型只是一个 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,它们都工作正常。无论如何,除了这个对象的 float/double 字段之外,我的整个系统一切正常。
最佳答案
您的问题是方法setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
。
通过此策略,Gson 希望 Json 字段命名为 XCoord
和 YCoord
,并以大写字母开头。这意味着 Java 字段 xCoord
从 Json 字段 XCoord
获取值,但由于该字段不存在,因此其值默认为 0.0
。
所以你有两个选择:
如果您不需要任何地方,请删除
setFieldNamingPolicy()
。尽管看起来您通过字段id
依赖它。将 Json 字段重命名为
XCoord
和YCoord
。
关于java - GSon 反序列化 float 为 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191255/