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