1 回答
TA贡献1890条经验 获得超9个赞
在 invopop/jsonschema 中使用 Go 标签并不能很好地支持这些复杂的用例。任何打破常规用例的东西我都建议实施该JSONSchema()方法,以便您可以手动定义对象。按照你的例子:
type Boulou struct {
Name string `json:"name"`
Transformers []TransformerConfig `json:"transformers"`
}
func (Boulou) JSONSchema() *jsonschema.Schema {
props = orderedmap.New()
props.Set("name", &jsonschema.Schema{
Type: "string",
Title: "Name",
})
props.Set("transformers", &jsonschema.Schema{
Type: "array",
Title: "Transformers",
Items: &jsonschema.Schema{
Ref: ".....",
If: "properties.kind.const=convert_swim",
Then: "required[0]=convert_swim_config",
},
})
return &jsonschema.Schema{
Type: "object",
Title: "Boulou",
Properties: props,
}
}
我没有直接测试过这个,但我相信你明白了。您需要手动弄清楚Ref您的TransformerConfig是什么。
更新:现在有一个新的PR #52,一旦发布,应该会更容易做到!
- 1 回答
- 0 关注
- 171 浏览
添加回答
举报