mirror of
https://github.com/nlohmann/json.git
synced 2026-10-29 17:15:42 +00:00
Add a test for the object key contract and correct the BON8 note
Pin the guarantees documented for json_sax::key and the key event of parser callbacks: decoded names, validation before delivery, delivery before the colon, one event per repeated name, and the binary formats. BON8 rejects ill-formed UTF-8 in a name even with sax_parse, so the note no longer lists it with the formats that pass bytes through. See discussion #5955. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
2 files changed
+133
-2
No files matched your search
@@ -32,8 +32,9 @@ When parsing JSON text, `val` is the decoded object name, not its spelling in th
|
||||
- `key` is called before the following `:` is read, so a parse error may still follow for the same member.
|
||||
- A name that occurs several times in the same object is passed once per occurrence.
|
||||
|
||||
For the binary formats, object keys contain no escape sequences: `val` holds the bytes stored in the input.
|
||||
[`sax_parse`](../basic_json/sax_parse.md) passes them unchanged, without checking them for valid UTF-8.
|
||||
For the binary formats, object keys contain no escape sequences. For CBOR, MessagePack, UBJSON, and BSON, `val` holds
|
||||
the bytes stored in the input, and [`sax_parse`](../basic_json/sax_parse.md) passes them unchanged, without checking them
|
||||
for valid UTF-8. BON8 encodes characters itself, so an ill-formed name is a parse error and `key` is not called for it.
|
||||
|
||||
## Examples
|
||||
|
||||
|
||||
Reference in new issue
Block a user