Faire GSON désérialiser les chiffres pour les nombres entiers ou en double

Je vais avoir un moment difficile avec GSON.

J'ai un simple JSON que je veux désérialiser un Map<String,Object>.

C'est vraiment intuitif pour moi que 123 doit être analysée comme un int (ou long), 123.4 comme un float( ou double).

GSON d'autre part crée des Doubles de tous les temps.

Puis-je dire GSON de ne pas abuser de double de tous les temps?

Mon code:

Type mapType = new TypeToken<Map<String, Object>>() {}.getType();
GSON gson = new Gson();
Map<String, Object> map = gson.fromJson(someString, mapType);
  • La racine du problème est qu'il n'existe qu'un seul type de Numéro. JSON n'a pas de type int - ils sont tous à virgule flottante et en décimales sont omis lorsque cela est possible.
  • oui, je sais cela. Mais GSON comportement du fait de la désérialisation et la sérialisation de produire une autre sortie que de l'entrée d'origine, ce qui est vraiment méchant; par exemple, j'ai un timestamp champ qui est à l'origine 1234567890, et après deser-ser cycle est de 1.23456789E9
  • existe-il des solutions ?
InformationsquelleAutor Merchuk Hul | 2014-07-24