Я разбирал большое количество json, манипулировал некоторыми значениями, и я хотел бы написать его обратно. Aeson расшифровывает числа на научные, но когда он кодирует его, по умолчанию, научный показывает числа в научной нотации во многих случаях, и эзон не предлагает никаких средств, которые я могу видеть, чтобы изменить это.В aeson, как вы кодируете значение Value, не приводя к научной нотации?
> 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"
Если другие языки не могут его использовать, это проблема с их парсером JSON. [Научное обозначение является частью стандарта JSON.] (Http://www.json.org/) – Cirdec
Отмечено. Мне все равно хотелось бы знать, есть ли способ сделать это, не нажимая мою собственную функцию кодирования. –