Почему GSON ставит десятичную точку и нуль после всех моих номеров JSON, которые изначально не содержат десятичных чисел?

Я прочитал JSON из веб-службы и преобразовал все объекты JSON в HashMap<String, String> с помощью GSON.

Я тестировал, и мой JSONObject прекрасно (без десятичной точки в любом из чисел), но у объекта карты есть элементы со всеми числами с десятичной точкой и нулем после этого.

Вот мой код:

 try { jsonArray = json.getJSONArray("PropertyListings"); for(int i = 0; i < jsonArray.length(); i++){ JSONObject c = jsonArray.getJSONObject(i); HashMap<String, String> map = new HashMap<String, String>(); map = (HashMap<String, String>) new Gson().fromJson(jsonArray.getString(i), map.getClass()); listOfProperties.add(map); } 

Из Википедии. Основные типы JSON:

Число – знаковое десятичное число, которое может содержать дробную часть и может использовать экспоненциальную запись E. JSON не разрешает такие числа, как NaN, и не делает различий между целыми числами и плавающей точкой. (Несмотря на то, что JavaScript использует формат с плавающей запятой с двойной точностью для всех своих числовых значений, другие языки, реализующие JSON, могут кодировать номера по-разному)

Он не делает различий между ints и float. Поэтому он думает, что каждое число может иметь дробную часть, поэтому, когда вы конвертируете число в String, оно оставляет эту часть. Попробуйте преобразовать ее в Integer .