Fix: record MarshalJSON in case of default record with nullable field #451
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.
I came across the following case where record
MarshalJSONgenerates an Invalid schema, whichavro.Parsefails to parse, returning the error:Schema:
{ "type": "record", "name": "test", "namespace": "org.hamba.avro", "fields": [ { "name": "a", "type": { "type": "record", "name": "test2", "fields": [ { "name": "b", "type": "int" }, { "name": "c", "type": [ "null", "int" ] } ] }, "default": { "b": 1, "c": null } } ] }The generated invalid schema:
{ "name": "org.hamba.avro.test", "type": "record", "fields": [ { "name": "a", "type": { "name": "org.hamba.avro.test2", "type": "record", "fields": [ { "name": "b", "type": "int" }, { "name": "c", "type": [ "null", "int" ] } ] }, "default": { "b": 1, "c": {} } } ] }The default value of
cshould benullinstead of an empty JSON object.If I got it right, a fix could be to define a custom
MarshalJSONfor thenullDefaultvalue: