Проблема с плавающей точкой JsonSlurper

У меня есть файл с некоторыми данными и параметрами конфигурации, которые мне нужно изменить, прежде чем использовать его в качестве данных тела для вызова POST rest.

Поэтому я использую slurper для получения значения конфигурации

JsonSlurper slurper = new JsonSlurper()
def inputFile = new File("file.json")
def parsedInput = slurper.parse(inputFile)

Затем я меняю нужный параметр конфигурации

parsedInput.config.id = 1

Затем измененный входной файл записывается во временный файл.

def tempFile = new File("temp.json")
tempFile.write(JsonOutput.toJson(parsedInput))

Я был очень удивлен, когда понял, что выходной файл в три раза больше, чем входной. Я проверил содержимое, и похоже, что slurper изменил точность поплавка.

До модификации

0.145,
0.144,
0.145,

После модификации

0.1459999999999999908961711980737163685262203216552734375, 
0.1449999999999999900079927783735911361873149871826171875, 
0.1459999999999999908961711980737163685262203216552734375

Есть идеи, как это исправить?

РЕДАКТИРОВАТЬ 1: добавлены некоторые входные данные

http://wklej.org/hash/4de6639a5bf/txt/


person user2847238    schedule 06.04.2016    source источник
comment
У вас есть пример ввода json?   -  person tim_yates    schedule 06.04.2016
comment
Добавлена ​​ссылка на входной файл   -  person user2847238    schedule 06.04.2016
comment
@user2847328 user2847328 Серьезно, это лучший пример, который вы могли придумать? Огромный массивный файл? Здесь вставлены четыре строки, которые продемонстрировали, что проблема была бы лучше, чем мегабайты стороннего json, которых, вероятно, больше не будет, когда кто-то другой столкнется с той же проблемой позже и найдет этот вопрос...   -  person tim_yates    schedule 06.04.2016
comment
Это фактический файл, который я использую в своем сценарии, я только что удалил некоторые данные, которые в данном случае бесполезны.   -  person user2847238    schedule 07.04.2016


Ответы (1)


проверьте свою версию groovy, она должна быть исправлена ​​к концу 2011 г. (https://issues.apache.org/jira/browse/GROOVY-5129)

person Pavel Gatnar    schedule 06.04.2016
comment
Я использую Groovy-2.4.5 - person user2847238; 06.04.2016
comment
@ user2847238 проверьте тип, будь то BigDecimal или Double - person Pavel Gatnar; 06.04.2016