generate icon indicating copy to clipboard operation
generate copied to clipboard

Custom `MarshalJSON()` ignores `omitempty`

Open ieure opened this issue 2 years ago • 0 comments

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.

ieure avatar Jan 08 '22 00:01 ieure