Przetworzyłem dużą ilość jsonów, zmanipulowałem niektóre wartości i chciałbym je zapisać. Aeson dekoduje liczby do danych naukowych, ale kiedy je koduje, domyślnie, w wielu przypadkach naukowych pokazuje liczby w notacji naukowej, a aeson nie oferuje żadnych środków, które mogę zobaczyć, aby to zmienić.W aeson, w jaki sposób kodujesz z wartości bez tworzenia notacji naukowej?
> 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]"
Jak mogę zapisać moją wartość liczbową w bardziej akceptowalnym formacie, który mogą spożywać inne języki? Udawajmy, że nie chodzi mi o precyzję strat lub przepełnienie liczb całkowitych. Pakiet naukowy ma środki do formatowania liczb w ten sposób, aeson zwyczajnie go nie użył.
>formatScientific Fixed Nothing (0.01)
"0.01"
>formatScientific Fixed Nothing (1000000000.1)
"1000000000.1"
Jeśli inne języki nie mogą go używać, jest to problem z ich parserem JSON. [Notacja naukowa jest częścią standardu JSON.] (Http://www.json.org/) – Cirdec
Noted. Nadal chciałbym wiedzieć, czy istnieje sposób, aby to zrobić bez pisania własnej funkcji kodowania. –