Tôi muốn biết liệu tôi có thể xác định lược đồ JSON (bản nháp 4) yêu cầu ít nhất một trong nhiều thuộc tính có thể cho một đối tượng hay không. Tôi đã biết về allOf
, anyOf
và oneOf
nhưng không thể tìm ra cách sử dụng chúng theo cách tôi muốn.Cách xác định giản đồ JSON yêu cầu ít nhất một trong nhiều thuộc tính
Dưới đây là một số ví dụ để minh họa JSON:
// Test Data 1 - Should pass
{
"email": "[email protected]",
"name": "John Doe"
}
// Test Data 2 - Should pass
{
"id": 1,
"name": "Jane Doe"
}
// Test Data 3 - Should pass
{
"id": 1,
"email": "[email protected]",
"name": "John Smith"
}
// Test Data 4 - Should fail, invalid email
{
"id": 1,
"email": "thisIsNotAnEmail",
"name": "John Smith"
}
// Test Data 5 - Should fail, missing one of required properties
{
"name": "John Doe"
}
Tôi muốn yêu cầu ít nhất id
hoặc email
(cũng chấp nhận cả hai) và vẫn vượt qua xác nhận theo định dạng. Sử dụng oneOf
không xác nhận nếu tôi cung cấp cả xác nhận (kiểm tra 3), anyOf
đi ngay cả khi một trong số họ là không hợp lệ (kiểm tra 4)
Dưới đây là sơ đồ của tôi:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://example.com",
"properties": {
"name": {
"type": "string"
}
},
"anyOf": [
{
"properties": {
"email": {
"type": "string",
"format": "email"
}
}
},
{
"properties": {
"id": {
"type": "integer"
}
}
}
]
}
Bạn có thể giúp tôi làm thế nào để đạt được xác nhận chính xác cho trường hợp sử dụng của tôi?