java - GSon 反序列化 float 为 0.0

标签 java android gson

这是我的对象

{  
         "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 字段命名为 XCoordYCoord,并以大写字母开头。这意味着 Java 字段 xCoord 从 Json 字段 XCoord 获取值,但由于该字段不存在,因此其值默认为 0.0

所以你有两个选择:

  • 如果您不需要任何地方,请删除 setFieldNamingPolicy()。尽管看起来您通过字段 id 依赖它。

  • 将 Json 字段重命名为 XCoordYCoord

关于java - GSon 反序列化 float 为 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191255/

相关文章:

java - Bukkit EventHandler 忽略 if 语句

java - 在获取 UTC Android 中的实际时间时遇到问题

java - 我需要将 JsonObject 转换为 HashMap ,但 JSON 的结构有点不同

java - 定义 onClick 参数不在 xml 文件 android

android - 如何从发送 Intent 接收数据?

java - 如何将这个 JSON 响应转换为 POJO?

android - Gson 自定义反序列化器就在现场

java - 在处理之前让队列建立一定数量

java - Hibernate 投影中的列别名

java - Findbugs NP_ARGUMENT_MIGHT_BE_NULL 未按预期触发