From e1d654c3ba59de60f1b8b5ba2ff829fa0fd2c531 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 6 Oct 2022 19:15:48 +0200 Subject: [PATCH] Add "omitempty" to json struct tag if optional --- cmd/jsonschemagen/main.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cmd/jsonschemagen/main.go b/cmd/jsonschemagen/main.go index b414f37..448ad1f 100644 --- a/cmd/jsonschemagen/main.go +++ b/cmd/jsonschemagen/main.go @@ -72,12 +72,26 @@ func schemaType(schema *jsonschema.Schema) jsonschema.Type { } } +func isRequired(schema *jsonschema.Schema, propName string) bool { + for _, name := range schema.Required { + if name == propName { + return true + } + } + return false +} + func generateStruct(schema *jsonschema.Schema, root *jsonschema.Schema) jen.Code { var fields []jen.Code for name, prop := range schema.Properties { id := formatId(name) + required := isRequired(schema, name) t := generateSchemaType(&prop, root) - tags := map[string]string{"json": name} + jsonTag := name + if !required { + jsonTag += ",omitempty" + } + tags := map[string]string{"json": jsonTag} fields = append(fields, jen.Id(id).Add(t).Tag(tags)) } return jen.Struct(fields...)