[Haskell-cafe] JSON library suggestions?

Alvaro Gutierrez radical at google.com
Thu Apr 26 06:10:47 CEST 2012


On Wed, Apr 25, 2012 at 10:42 PM, Richard O'Keefe <ok at cs.otago.ac.nz> wrote:

> Note that the conversion *IS* lossy in practice.
> If you send a JSON message to a Javascript program,
> or a Python program, or a Go program (if I am reading
> src/pkg/encoding/json/decode.go
> correctly) what you get will be a 64-bit float.
> The Jackson parser for Java uses Double for numbers with a '.' or 'e' by
> default,
> although it can be configured to use BigDecimal.
>
> If you want numbers outside the domain of finite 64-bit floats to travel
> unscathed through JSON, then you must control not only which languages are
> used at each end, but which versions of which libraries and how configured.
>
>
Right, for better or for worse, the absence of numeric semantics in the
JSON standard means that what a number means is up to the implementation(s)
involved, and the onus is on the user(s) to coordinate between them.


> I argued the other end of this in the mailing list for another language,
> saying that I wanted things that look like integers to be decoded as
> integers,
> and was stepped on hard.  Some people found their programs much simpler if
> they always got the same kind of Number whatever the input looked like (in
> Jackson, a Number might be returned as an instance of any of five classes).
>

My view is that the only reasonable approach is to decode JSON numbers into
arbitrarily-sized rationals, such that interpretation is arguably lossless
(modulo loss of precision, if e.g. 1.0 cannot be distinguished from 1).


Alvaro
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120426/80fa42f4/attachment-0001.htm>


More information about the Haskell-Cafe mailing list