GSon反序列化浮点数为0.0

时间:2016-02-04 02:11:55

标签: java android gson

这是我的对象

{  
         "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,这些都可以正常运行。无论如何,我的整个系统一切正常,除了这个对象的浮点/双字段。

1 个答案:

答案 0 :(得分:0)

您的问题是方法setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)

使用此策略,Gson希望Json字段的名称为XCoordYCoord,以大写字母开头。这意味着Java字段xCoord从Json字段XCoord获取值,但由于该字段不存在,其值默认为0.0

所以你有两个选择:

  • 如果您在任何地方都不需要,请移除setFieldNamingPolicy()。虽然看起来你依赖于字段id

  • 将Json字段重命名为XCoordYCoord