Я проанализировал большое количество json, манипулировал некоторыми значениями и хотел бы записать их обратно. Aeson декодирует числа в научные, но когда он их кодирует, по умолчанию, научный во многих случаях показывает числа в научном представлении, и aeson не предлагает никаких средств, которые я вижу, чтобы изменить это.
> decode "[\"asdf\", 1, 1.0, 1000000000.1, 0.01]" :: Maybe Value
Just (Array [String "asdf",Number 1.0,Number 1.0,Number 1.0000000001e9,Number 1.0e-2])
encode (Array [String "asdf",Number 1.0,Number 1.0,Number 1.0000000001e9,Number 1.0e-2])
"[\"asdf\",1,1,1.0000000001e9,1.0e-2]"
> encode (Array [String "asdf", Number 1, Number 1.0, Number 1000000000.1, Number 0.01])
"[\"asdf\",1,1,1.0000000001e9,1.0e-2]"
Как я могу записать свое значение с числами в более широко приемлемом формате, который могут использовать другие языки? Давайте притворимся, что меня не беспокоят потери точности или целочисленные переполнения. В научном пакете есть средства для форматирования чисел таким образом, но Эсон просто не использовал его.
>formatScientific Fixed Nothing (0.01)
"0.01"
>formatScientific Fixed Nothing (1000000000.1)
"1000000000.1"