Rimantas,

At json.org the grammar for numbers does not limit the precision to IEEE double 
precision.

There are specifications (e.g. OData 4.0) which pemit decimal/integer values 
being encoded as JSON numbers that might go outside the range of IEEE double, 
with an expectation that agents (clients and servers) will preserve the 
precision.

Such encodings can present interoperability issues with parsers (such as a 
typical JavaScript/JSON parser), and clearly also this is affecting Swift.

Therefore you may find that when working with such specifications, and with 
JSON parsing in Swift, you need your own (or a third-party) JSON parser if 
arbitrary integer/decimal precision needs to be retained when using JSON 
numbers rather than JSON strings for the arbitrary precision integer/decimal 
encoding.

Some folks might wish to consider this as a defect in the JSON parser, others 
may see it as an issue with the way that values are being encoded in JSON. 

Now I-JSON (see 
https://datatracker.ietf.org/doc/draft-ietf-json-i-json/03/?include_text=1) 
defines some extra constraints to avoid such interoperability issues.

> From: Rimantas Liubertas <riman...@gmail.com>
> To: swift-users <swift-users@swift.org>
> Subject: Re: [swift-users] Parsing Decimal values from JSON
> 
> > Swift shouldn't be forced to adhere to the limitations of JavaScript. Just
> > because JS doesn't know about decimals doesn't mean swift can't do better.
> >
> JSON does not know about decimals either. http://json.org/. If you need
> some custom data type you can always pass it as a string and then handle as
> needed.
> 
> Best regards,
> Rimantas
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to