我可以根据 JSON 模式中属性的值应用不同的子模式吗

问题描述 投票:0回答:1

我有一个 JSON 对象,其中一个属性中的键基于另一个字段的值。例如,如果我的

type
值为
GPS
,则 fields 对象应该具有
lat
lng
属性。

{
  "type": "GPS",
  "fields": {
    "lat": 51.234,
    "lng": -1.5434
  }
}

另一种情况可能是

ROOM
具有
temp
humidity
属性,但现实中还有更多。

{
  "type": "ROOM",
  "fields": {
    "temp": 22.5,
    "humidity": 32
  }
}

验证需要只允许指定的字段,例如,如果类型是

GPS
,则应该允许
fields.temp

这可行吗?我正在使用 Typescript 和 NodeJS AJV 包。

json typescript validation jsonschema ajv
1个回答
0
投票

您可以使用 AJV 定义一个模式,其中字段属性根据使用 if then else 的类型而变化。例如。如果类型是 GPS,则字段必须有 lat 和 lng,并且不允许有额外的字段。同样,对于房间来说,它应该只有温度和湿度

© www.soinside.com 2019 - 2024. All rights reserved.