Use json.RawMessage instead of interface{}

This allows the user to perform custom logic to decide how to
decode the JSON.
This commit is contained in:
Simon Ser 2022-10-07 11:28:43 +02:00
parent 7ffb8e8292
commit 49d4519492

View file

@ -164,12 +164,20 @@ func generateSchemaType(schema *jsonschema.Schema, root *jsonschema.Schema, requ
return jen.Map(jen.String()).Add(generateSchemaType(schema.AdditionalProperties, root, true)) return jen.Map(jen.String()).Add(generateSchemaType(schema.AdditionalProperties, root, true))
} }
default: default:
return jen.Interface() return jen.Qual("encoding/json", "RawMessage")
} }
} }
func generateDef(def *jsonschema.Schema, root *jsonschema.Schema, f *jen.File, name string) { func generateDef(schema *jsonschema.Schema, root *jsonschema.Schema, f *jen.File, name string) {
f.Type().Id(formatId(name)).Add(generateSchemaType(def, root, true)).Line() id := formatId(name)
if schema.Ref == "" && schemaType(schema) == "" {
f.Type().Id(id).Struct(
jen.Qual("encoding/json", "RawMessage"),
).Line()
} else {
f.Type().Id(id).Add(generateSchemaType(schema, root, true)).Line()
}
} }
func loadSchema(filename string) *jsonschema.Schema { func loadSchema(filename string) *jsonschema.Schema {