Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
An implementation of
#112 that
introduces a rich set of helpers for creating arrays using a
backwards-compatible approach that maintains the current semantic model
of the array/object writer being responsible for introducing plumbing.
Since the "outer" level drives the plumbing, we add writers for every
combination of value and context:
beginArray,beginArrayElementandbeginArrayMemberfor creating an array in top-level, array and objectrespectively and the same for other values.
In this model,
writeValueitself performs no begin/end tracking -instead, it is up to the entity that creates the array/object to do so
(
writeRecordValue,stepwiseArrayCreationand so on).Here's an example of writing a
writeValueoverload that writes anarray nested in an object:
The writing API is quite regular but requires calling special functions
depending on the context which is easy to forget - calling the wrong
variation results in invalid JSON!
The backwards-compatiblity issue can be seen in a new test case based on
a real-world example for writing byte arrays as hex strings.
Further examples are available in the documentation.