2016-02-04 3 views
1

Вот мой объектGSon десериализации плавает в 0,0

{ 
     "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 
} 

Все остальные поля работают отлично, за исключением поплавка или двойной xVal yVal

Кроме того, мой экземпляр Gson является

sGsonUpperCamelCase = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) 
       .registerTypeAdapterFactory(typeFactory).create(); 

typeFactory не является для этого POJO, но для некоторых других, которые все работают нормально. Во всяком случае, все работает отлично со всей моей системой, за исключением полей float/double одного объекта.

+2

Можете ли вы разместить свою модель? – hehe

+1

опубликуйте образец образца модели, тогда мы поймем, где проблема –

+0

десериализована в чем именно? Боб? – burntsugar

ответ

0

Ваша проблема заключается в способе setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).

С помощью этой политики, Gson ожидает, что поля Json будут называться XCoord и YCoord, начиная с прописной буквы. Это означает, что поле Java xCoord получает значение из поля Json XCoord, но так как этого не существует, его значение по умолчанию равно 0.0.

Так у вас есть два варианта:

  • Снимите setFieldNamingPolicy(), если вам не нужно его в любом месте. Хотя похоже, что вы полагаетесь на него с полем id.

  • Переименуйте поля Json на XCoord и YCoord.