diff --git a/pkg/codegen/schema.go b/pkg/codegen/schema.go index 457e102fe7..e9fccbff99 100644 --- a/pkg/codegen/schema.go +++ b/pkg/codegen/schema.go @@ -638,17 +638,20 @@ func GenFieldsFromProperties(props []Property) []string { field += fmt.Sprintf(" %s %s", goFieldName, p.GoTypeDef()) + omitEmpty := !p.Nullable && + (!p.Required || p.ReadOnly || p.WriteOnly) && + (!p.Required || !p.ReadOnly || !globalState.options.Compatibility.DisableRequiredReadOnlyAsPointer) + // Support x-omitempty - overrideOmitEmpty := true - if _, ok := p.Extensions[extPropOmitEmpty]; ok { - if extOmitEmpty, err := extParseOmitEmpty(p.Extensions[extPropOmitEmpty]); err == nil { - overrideOmitEmpty = extOmitEmpty + if extOmitEmptyValue, ok := p.Extensions[extPropOmitEmpty]; ok { + if extOmitEmpty, err := extParseOmitEmpty(extOmitEmptyValue); err == nil { + omitEmpty = extOmitEmpty } } fieldTags := make(map[string]string) - if (p.Required && !p.ReadOnly && !p.WriteOnly) || p.Nullable || !overrideOmitEmpty || (p.Required && p.ReadOnly && globalState.options.Compatibility.DisableRequiredReadOnlyAsPointer) { + if !omitEmpty { fieldTags["json"] = p.JsonFieldName if p.NeedsFormTag { fieldTags["form"] = p.JsonFieldName