DecimalFormat и Hashmap - PullRequest
       22

DecimalFormat и Hashmap

0 голосов
/ 08 мая 2018

Итак, у меня есть динамические данные, которые double , и я пытаюсь добавить их к HashMap и использую Gson Я конвертирую их в JSON . иногда данные могут быть 0,00 или 0,0, тогда я хочу добавить только 0 в HashMap. Для этой цели я использую DecimalFormat для форматирования данных, как я хочу (как я уже упоминал выше), но когда я это делаю, он принимает значение в виде строки в JSON. Когда я пытаюсь распечатать его, он печатает его как число, но когда я добавляю его в hashmap и конвертирую в JSON, это строка. Я не знаю, что я делаю неправильно, кто-нибудь может мне помочь в этом. вот код.

 HashMap<String, Object> field = new LinkedHashMap<>();
 double heading = 0.00;
 DecimalFormat decimalFormat = new DecimalFormat("##.##");
 field.put("data", decimalFormat.format(heading));
 Gson gson = new GsonBuilder().setPrettyPrinting().serializeNulls().disableHtmlEscaping().create();  // create a GsonBuilder to convert the hashmap to a Json String.
        String jsonOutput = gson.toJson(field);
 System.out.println( jsonOutput );

рассматривайте поле Hashmap как большой набор данных, тогда результат будет

 field{
data: "0"
}

но я хочу, чтобы это было

field{
data: 0
}

Я не хочу 0 в "" . Есть ли какая-либо другая альтернатива DecimalFormat или есть способ заставить хэш-карту принять ее за число.

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Здесь Decimalformat форматирует вывод в строку. Проверьте тип выхода format().

вы можете разобрать вывод в целое число, как

     field.put("data", Double.parseDouble( decimalFormat.format(heading)));
0 голосов
/ 08 мая 2018

Если вам не нужны цифры после десятичной дроби. тогда вы можете попробовать ниже код:

field.put("data", (long) heading);
0 голосов
/ 08 мая 2018

Вы можете поставить в Double напрямую. Гсон знает, как вывести это.

field.put("data", heading)

иногда данные могут быть 0,00 или 0,0, тогда я хочу добавить только 0 в HashMap.

Я предлагаю, чтобы 0.00, 0.0 и 0 были одним и тем же числом, и что вам не важно, какой из них окажется в результирующем JSON. Любой анализатор JSON сможет правильно прочитать его обратно.

Что бы отключить анализатор JSON (и потребителя), если вы записали его в виде строки.

...