在json模式中定义键值对的正确方法是什么
如何在json模式中定义键值对对象(正确的方式) 我想定义一下:在json模式中定义键值对的正确方法是什么,json,json.net,schema,jsonschema,Json,Json.net,Schema,Jsonschema,如何在json模式中定义键值对对象(正确的方式) 我想定义一下: "id" : 99, _info : { "name" : "somename", "href" : "someUrl" } 以下两项是否准确 (一) (二) 实现这一点的正确方法是什么?人们将知道序列化/反序列化时的模式和对象的外观是什么?在JSON中,对象已经是键值对的集合。您不需要任何特殊的东西来定义它: { "_info":{"type":"object"} } 从这里可以添加约束 如果您知道
"id" : 99,
_info : {
"name" : "somename",
"href" : "someUrl"
}
以下两项是否准确
(一)
(二)
实现这一点的正确方法是什么?人们将知道序列化/反序列化时的模式和对象的外观是什么?在JSON中,对象已经是键值对的集合。您不需要任何特殊的东西来定义它:
{
"_info":{"type":"object"}
}
从这里可以添加约束
- 如果您知道密钥的名称,可以将它们添加到“属性”中
- 如果知道所有可能的键,则将“additionalProperties”设置为false
- 如果要限制可能的键名,请使用“patternProperties”
{
"title": "Force every property to have a string value",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": {"type": "string"}
}
问题是什么?为什么在选项1中使用
“type”:“array”
?示例数据中没有数组,但这并没有将值限制为字符串。看看Gustavo的模式尝试,看起来这就是他想要的…@tpei,我修改了答案来掩盖你的担忧。这太棒了。不知道其他属性
可以接收对象。在本网站的其他答案中,还提出了许多更复杂的解决方案。
{
"_info":{"type":"object"}
}
{
"title": "Force every property to have a string value",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": {"type": "string"}
}