У меня есть данные, которые возвращаются из GraphQL, я хотел бы проверить эти данные с помощью схемы JSON, прежде чем манипулировать ими.
Может быть лучший способ сделать это в graphQL, чем я сейчас , но возвращаемые данные могут быть двух типов с одинаковыми свойствами:
например, упрощенная версия данных
obj: {
audio: {
artists: []
},
video: {}
}
или
obj: {
audio: {},
video: {
artists: []
}
}
Итак действительность будет:
- объект со свойством
audio
и video
- объект с
audio
как объект со свойством artists
и пустым свойство video
объект - объект с
video
как объект со свойством artists
и пустым свойством audio
объект - ни
audio
, ни video
не должны быть вместе пустые - ни
audio
, ни video
не должны иметь свойства вместе
Я построил упрощенную схему, которая выглядит так:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "file://schemas/simple.schema.json",
"title": "simplified data",
"description": "simple",
"type": "object",
"properties": {
"audio": {
"type": "object"
},
"video": {
"type": "object"
}
},
"oneOf": [
{
"audio": {
"type": "object",
"properties": {
"artists": {
"type": "array"
}
}
},
"video": {
"type": "object",
"properties": {}
}
},
{
"audio": {
"type": "object",
"properties": {}
},
"video": {
"type": "object",
"properties": {
"artists": {
"type": "array"
}
}
}
}
]
}
но AJV, похоже, не проверяет данные правильно при запуске с:
{
"audio": {
"artists": []
},
"video": {}
}
Что может иметь Я ошибся в схеме?