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:
parent
7ffb8e8292
commit
49d4519492
1 changed files with 11 additions and 3 deletions
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue