วิธีแสดงประเภทผลรวม/สหภาพใน json schema

ฉันกำลังพยายามบันทึกการใช้ JSON ที่มีอยู่โดยใช้ json-schema ระบบอนุญาตให้มีความเป็นไปได้สองประการต่อไปนี้สำหรับแอตทริบิวต์ของวัตถุอย่างใดอย่างหนึ่ง

ทั้ง

{
    "tracking_number" : 123
}

Or

{
    "tracking_number" : [ 123, 124, 125 ]
}

ฉันจะแสดงสิ่งนี้โดยใช้ json schema ได้อย่างไร


person Q the Platypus    schedule 17.02.2016    source แหล่งที่มา


คำตอบ (1)


ใช้ anyOf เพื่อยืนยันว่าคุณสมบัติต้องสอดคล้องกับสคีมาอย่างใดอย่างหนึ่ง

{
    "type": "object",
    "properties": {
        "tracking_number": {
            "anyOf": [
                { "$ref": "#/definitions/tracking_number" },
                { "type": "array", "items": { "$ref": "#/definitions/tracking_number" }
            ]
    },
    "definitions": {
        "tracking_number": { "type": "integer" }
    }
}
person Jason Desrosiers    schedule 18.02.2016
comment
ปรากฎว่า oneOf ดีกว่าสำหรับฉันในสถานการณ์นี้ แต่คุณทำให้ฉันอยู่ในเส้นทางที่ถูกต้อง - person Q the Platypus; 19.02.2016
comment
มีการอธิบายคำหลักเหล่านี้ไว้ที่นี่: json-schema.org/understand-json- สคีมา/อ้างอิง/ - person Ari Fordsham; 07.09.2020