创建嵌套JSON模式的设计方法
我对创建json模式比较陌生。我的问题是关于具有多个嵌套级别的模式的适当布局设计(一个对象包含另一个子对象,该子对象也可能包含对象数组等) 选项#1)最初我将模式放入定义中,然后在“数据”/“输出”部分嵌套对象,并使用ref引用每个对象。我认为这将使消费者更容易理解模式布局/嵌套。但输出的可读性似乎较低(每个级别和子对象都有更多的大括号) 选项#2)相反,如果在定义中,我将子对象定义为每个父定义中的属性(并使用$ref),则输出看起来更清晰,但层次结构往往隐藏在模式定义中 是否有理由使用更好的特定方法(可读性、验证等),或者我的方法可能是错误的。感谢您的建议。 谢谢 选项#1-在“数据”/“输出”部分完成嵌套。checkPaymentDetail具有属性checkPaymentAdditionalDetails创建嵌套JSON模式的设计方法,json,validation,nested,schema,Json,Validation,Nested,Schema,我对创建json模式比较陌生。我的问题是关于具有多个嵌套级别的模式的适当布局设计(一个对象包含另一个子对象,该子对象也可能包含对象数组等) 选项#1)最初我将模式放入定义中,然后在“数据”/“输出”部分嵌套对象,并使用ref引用每个对象。我认为这将使消费者更容易理解模式布局/嵌套。但输出的可读性似乎较低(每个级别和子对象都有更多的大括号) 选项#2)相反,如果在定义中,我将子对象定义为每个父定义中的属性(并使用$ref),则输出看起来更清晰,但层次结构往往隐藏在模式定义中 是否有理由使用更好的特
"definitions": {
....
},
"type": "object",
"properties": {
"paymentList": {
"type": "array",
"items": {
"paymentItem": {
"$ref": "#/definitions/paymentItem"
},
"paymentDetail": {
"type": "object",
"properties": {
"checkPaymentDetail": {
"$ref": "#/definitions/checkPaymentDetail"
},
"checkPaymentAdditionalDetails": {
"type": "object",
"properties": {
"checkPaymentAdditionalDetails": {
"$ref": "#/definitions/checkPaymentAdditionalDetails"
}
}
}
}
# more stuff, then done
"definitions": {
"paymentList": {
"type": "array",
"items": {
"paymentItem": {
"$ref": "#/definitions/paymentItem"
},
"paymentDetail": {
"type": "object",
"properties": {
"checkPaymentDetail": {
"$ref": "#/definitions/checkPaymentDetail"
}
}
}
}
},
"checkPaymentDetail": {
"type": "object",
"properties": {
"recordID": {
"type": "string",
},
"checkPaymentAdditionalDetails": {
"$ref": "#/definitions/checkPaymentAdditionalDetails"
}
},...more
},
...end of definitions
"type": "object",
"properties": {
"paymentList": {
"$ref": "#/definitions/paymentList"
}
}
JSON输出
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2",
},
"checkPaymentAdditionalDetails": {
"checkPaymentAdditionalDetails": {
"recordID": "X2,
"batchID": "01",
}
}
}
...
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2"
"checkPaymentAdditionalDetails": {
"recordID": "B1",
"amount": 4367545,
}
}
}
...
结束JSON输出
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2",
},
"checkPaymentAdditionalDetails": {
"checkPaymentAdditionalDetails": {
"recordID": "X2,
"batchID": "01",
}
}
}
...
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2"
"checkPaymentAdditionalDetails": {
"recordID": "B1",
"amount": 4367545,
}
}
}
...
架构-在“数据”/“输出”部分中完成嵌套(checkPaymentDetail具有属性checkPaymentAdditionalDetails)
选项2 JSON输出
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2",
},
"checkPaymentAdditionalDetails": {
"checkPaymentAdditionalDetails": {
"recordID": "X2,
"batchID": "01",
}
}
}
...
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2"
"checkPaymentAdditionalDetails": {
"recordID": "B1",
"amount": 4367545,
}
}
}
...
结束JSON输出
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2",
},
"checkPaymentAdditionalDetails": {
"checkPaymentAdditionalDetails": {
"recordID": "X2,
"batchID": "01",
}
}
}
...
"paymentDetail": {
"checkPaymentDetail": {
"recordID": "A2"
"checkPaymentAdditionalDetails": {
"recordID": "B1",
"amount": 4367545,
}
}
}
...
架构-在“定义”中定义的嵌套(checkPaymentDetail具有子对象checkPaymentAdditionalDetails的属性)