Make sure that the type discriminator is the first property #2730
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.
This changes allows to speed up deserialization a lot (for statically typed languages) as the polymorhic variants can be determined by peeking a single JSON key-value pair instead of deserializing a complete object into an intermediate representation.
This as well allows to use built-in polymorphic JSON deserialization with several JSON frameworks (like e.g.
System.Text.Json
in .NET).Note:
For other polymorhic objects like
Body
,Value
,Variant
, the discriminator is already emitted as the first key already.Edit:
Needs further work to ensure rest of the properties stay sorted. In the best case, safe-stable-stringify would provide an option to customize the sort order.