generate
generate copied to clipboard
Custom `MarshalJSON()` ignores `omitempty`
I have a schema with a UUID property. It has a regexp to validate its contents, but isn't marked as required:
"uuid": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
}
Non-required fields get an omitempty added to their json struct tag:
Uud string `json:"uuid,omitempty"`
However, MarshalJSON doesn't understand omitempty, so it always emits the field:
{"uuid": ""}
This causes schema validation to fail, since the empty string doesn't match the declared pattern.