Cope with negative-zero, and give an example of negative-zero and a large power of ten

This commit is contained in:
Tony Garnock-Jones 2023-06-14 20:49:21 +02:00
parent 49957be1e3
commit 514de5e308

View file

@ -90,7 +90,8 @@ To ensure that all implementations use the same JSON encoding we define
We define this encoding for a value to be the shortest We define this encoding for a value to be the shortest
UTF-8 JSON encoding with dictionary keys lexicographically sorted by UTF-8 JSON encoding with dictionary keys lexicographically sorted by
Unicode codepoint. Numbers in the JSON must be integers in the range Unicode codepoint. Numbers in the JSON must be integers in the range
`[-(2**53)+1, (2**53)-1]`. `[-(2**53)+1, (2**53)-1]`, represented without exponents or decimal
places, and negative zero `-0` MUST NOT appear.
We pick UTF-8 as the encoding as it should be available to all platforms We pick UTF-8 as the encoding as it should be available to all platforms
and JSON received from the network is likely to be already encoded using and JSON received from the network is likely to be already encoded using
@ -304,6 +305,21 @@ The following canonical JSON should be produced:
{"a":null} {"a":null}
``` ```
Given the following JSON object:
```json
{
"a": -0,
"b": 1e10
}
```
The following canonical JSON should be produced:
```json
{"a":0,"b":10000000000}
```
### Signing Details ### Signing Details
JSON is signed by encoding the JSON object without `signatures` or keys JSON is signed by encoding the JSON object without `signatures` or keys