[issue29992] Expose parse_string in JSONDecoder

Tobias Oberstein report at bugs.python.org
Wed Feb 16 11:09:44 EST 2022


Tobias Oberstein <tobias.oberstein at gmail.com> added the comment:

> It's unlikely that you would want to parse every string that looks enough like a decimal as a decimal, or that you would want to pay the cost of checking every string in the whole document to see if it's a decimal.

fwiw, yes, that's what I do, and yes, it needs to check every string

https://github.com/crossbario/autobahn-python/blob/bc98e4ea5a2a81e41209ea22d9acc53258fb96be/autobahn/wamp/serializer.py#L410

> Returning a decimal as a string is becoming quite common in REST APIs to ensure there is no floating point errors.

exactly. it is simply required if money values are involved.

since JSON doesn't have a native Decimal, strings need to be used (the only scalar type in JSON that allows one to encode the needed arbitrary precision decimals)

CBOR has tagged decimal fraction encoding, as described in RFC7049 section 2.4.3.

fwiw, we've added roundtrip and crosstrip testing between CBOR <=> JSON in our hacked Python JSON, and it works

https://github.com/crossbario/autobahn-python/blob/bc98e4ea5a2a81e41209ea22d9acc53258fb96be/autobahn/wamp/test/test_wamp_serializer.py#L235

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue29992>
_______________________________________


More information about the Python-bugs-list mailing list