dee*_*zen 5 json json.net jsonschema
我需要向 JSON 架构添加一个可选属性。该属性是Enum类型。如果用户未指定此字段,我需要设置默认值。
// schema
"properties" : {
"Param" : {
"type" : "string",
"enum" : [ " p1", "p2" ],
"optional" : true,
"default" : "p2",
"required" : true
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户不指定“Param”字段,则应将字段识别为“p2”
添加null到enum数组中
更多:https://json-schema.org/understanding-json-schema/reference/generic.html#enumerated-values
"properties" : {
"Param" : {
"type" : "string",
"enum" : [ " p1", "p2", null ], // <--
"default" : "p2", // <--
"required" : true
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在示例中所输入的,“default”是有效的 json-schema 关键字。但它的使用取决于模式使用者。
考虑到 json-schema 涉及数据结构定义和验证。事实上,这个关键字是经过多次讨论后添加的,因为它很常见,我们希望向客户提示什么应该是默认值,以防他们不想设置默认值。但是,同样,是否使用该值取决于客户端。
处理特定情况的另一种方法是使用“oneOf”拆分枚举值。
"required" : ["Param"],
"oneOf" : [{
"properties" : {
"Param" : {
"enum" : ["p2"]
}
}
}, {
"properties" : {
"Param" : {
"enum" : ["p1", "p3"]
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您告诉客户:“至少您必须向我发送值为“p2”的“Param”。
最后,您还可以在服务器端添加一个预处理步骤,在其中使用默认值获取所有缺失的属性,并在验证之前将它们添加到 json 消息中。
| 归档时间: |
|
| 查看次数: |
15977 次 |
| 最近记录: |