我有以下JSON片段,这些片段都是有效的
"units": { "name": "EU", "value": "Grams" }
"units": { "name": "EU", "value": "Kilograms" }
"units": { "name": "US", "value": "Ounces" }
"units": { "name": "US", "value": "Pounds" }
名称值可以是EU和US,有效值值应取决于名称值。
对这两个属性使用JSON Schema枚举很容易,但我可以使用JSON Schema强制执行其他约束吗?
我会考虑更改整体架构,以便在名称对象和值对象之间存在父子关系,但理想情况下可以避免这种关系。
答案 0 :(得分:0)
我设法使用https://www.jsonschemavalidator.net/破解它来通过一个例子来解决它。以下架构提供了解决方案:
"units": {
"type":"object",
"oneOf": [ {
"properties": {
"name": { "enum": [ "EU" ] },
"value": { "enum" : ["Grams", "Kilograms"]}}}, {
"properties": {
"name": { "enum": [ "US" ] },
"value": { "enum": ["Ounces", "Pounds"]}}}]
}