Tôi đã phân tích cú pháp một lượng lớn json, thao tác một số giá trị và tôi muốn viết lại. Aeson giải mã số vào khoa học, nhưng khi nó mã hóa nó, theo mặc định, khoa học cho thấy các con số trong ký hiệu khoa học trong nhiều trường hợp, và aeson không cung cấp bất kỳ phương tiện nào mà tôi có thể thấy để thay đổi điều đó.Trong aeson, làm thế nào để bạn mã hóa từ một giá trị mà không dẫn đến ký pháp khoa học?
> 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]"
Làm cách nào để ghi giá trị bằng các định dạng được chấp nhận rộng rãi hơn? Giả sử tôi không quan tâm đến việc mất chính xác hoặc tràn số nguyên. Gói khoa học có các phương tiện để định dạng các con số theo cách này, aeson chỉ xảy ra không sử dụng nó.
>formatScientific Fixed Nothing (0.01)
"0.01"
>formatScientific Fixed Nothing (1000000000.1)
"1000000000.1"
Nếu các ngôn ngữ khác không thể sử dụng nó, đó là vấn đề với trình phân tích cú pháp JSON của chúng. [Ký pháp khoa học là một phần của tiêu chuẩn JSON.] (Http://www.json.org/) – Cirdec
Lưu ý. Tôi vẫn muốn biết nếu có một cách để làm điều đó mà không cần viết chức năng mã hóa của riêng tôi. –