json-schema 中的自由形式子对象
Freeform subobject in json-schema
我正在用 swagger.io 起草一份 API 文档,并试图使其适合我们的用例。系统将接收和处理来自所有来源的数据,每个来源都有不同的字段集。
虽然处理的产品共享相同的架构,但我们也希望将输入包含在架构中以供参考。例如,给定
{
"foo": "bar"
"bar": "baz"
}
处理后的产品是
{
"original": {
"foo": "bar",
"bar": "baz"
}
"processed": {
"stdFieldA": "bar",
"stdFieldB": "baz"
}
}
假设对于来自不同来源的每个输入,我们最终有 stdFieldA
和 stdFieldB
。所以我们有响应模式对象
type: object
properties:
processed:
type: object
properties:
stdFieldA:
type: string
stdFieldB:
type: string
现在我们已经定义了 processed
子对象,我们可以为原始输入定义一个自由形式的对象,以便这个来自另一个来源的对象是有效的
{
"alpha": "lorem",
"beta": "ipsum"
}
如果我没有得到任何答案,我的解决方法是将原始输入存储为字符串(将原始输入转换为 JSON 字符串)。
type: object
没有 properties
描述了一个 free-form 对象。所以响应模式可以是:
type: object
properties:
original:
type: object # <----------
processed:
type: object
properties:
stdFieldA:
type: string
stdFieldB:
type: string
我正在用 swagger.io 起草一份 API 文档,并试图使其适合我们的用例。系统将接收和处理来自所有来源的数据,每个来源都有不同的字段集。
虽然处理的产品共享相同的架构,但我们也希望将输入包含在架构中以供参考。例如,给定
{
"foo": "bar"
"bar": "baz"
}
处理后的产品是
{
"original": {
"foo": "bar",
"bar": "baz"
}
"processed": {
"stdFieldA": "bar",
"stdFieldB": "baz"
}
}
假设对于来自不同来源的每个输入,我们最终有 stdFieldA
和 stdFieldB
。所以我们有响应模式对象
type: object
properties:
processed:
type: object
properties:
stdFieldA:
type: string
stdFieldB:
type: string
现在我们已经定义了 processed
子对象,我们可以为原始输入定义一个自由形式的对象,以便这个来自另一个来源的对象是有效的
{
"alpha": "lorem",
"beta": "ipsum"
}
如果我没有得到任何答案,我的解决方法是将原始输入存储为字符串(将原始输入转换为 JSON 字符串)。
type: object
没有 properties
描述了一个 free-form 对象。所以响应模式可以是:
type: object
properties:
original:
type: object # <----------
processed:
type: object
properties:
stdFieldA:
type: string
stdFieldB:
type: string