如何验证jsonschema中的变量嵌套对象



我需要为这样的结构创建一个模式:

{
"DeviceControl": {
"Commands": {
"BitLength": 8,
"Remark": "130=Restore device parameters to factory defaults,134=Calibrate gyro sensor,4=PDout come from IO-Link,128=PDout come from UART,165=Calibrate vacuum sensor,167=Reset erasable counter,168=Reset voltage min/max (Sensor & Actor) & Temperature,169=Reset vacuum min/max",
"ParameterDescriptor": "130=Restore device parameters to factory defaults,134=Calibrate gyro sensor,4=PDout come from IO-Link,128=PDout come from UART,165=Calibrate vacuum sensor,167=Reset erasable counter,168=Reset voltage min/max (Sensor & Actor) & Temperature,169=Reset vacuum min/max",
"Range": "130,134,4,128,165,167,168,169"
}
},
"Parameter": {
"Device Initial Settings": {
"MPU calibrate value - Gyro X": {
"Index": 303,
"Label": "MPU calibrate value - Gyro X",
"DataType": "IntegerT",
"BitLength": 16
},
"MPU calibrate value - Gyro Y": {
"Index": 304,
"Label": "MPU calibrate value - Gyro Y",
"DataType": "IntegerT",
"BitLength": 16
}
}
}
}

我遇到的问题是;BigLength、Remark、ParameterDescriptor等;我可以很容易地定义。但是,在它找到这个模式之前,我如何将它应用于所有对象?它可以是任何嵌套很深的东西。当不再有对象作为子对象时,它应该应用此模式。不可能为所有对象密钥(DeviceControl.CommandsParameter.Device Initial Settings.MPU calibrate value - Gyro X(定义固定模式

我也无法更改JSON。

谢谢你的提示。

JSON模式非常优雅地处理递归结构。如果我能正确理解你的问题,这个就行了。
{
"anyOf": [
{ ... leaf schema ... },
{
"type": "object",
"patternProperties": {
"": { "$ref": "#" }
}
}
]
}

第一个备选方案声明叶,第二个备选方案是一个分支,该分支可以是另一个分支或终止于一个叶,必要时递归。

注意:有些人更喜欢使用additionalProperties而不是patternProperties。我更喜欢这个,尽管它有点冗长,因为与additionalProperties不同,patternProperties的验证行为不能被其他关键字修改。

最新更新