Как проверить, существует ли значение в других свойствах JSON-схемы - PullRequest
0 голосов
/ 21 сентября 2019

Мне нужно проверить, существует ли значение в других свойствах файла json, а не в файле схемы.Интересно, возможно ли это вообще?

Я уже ищу какое-то ключевое слово, например "lookup" или "reference", но результатом является ссылка на файл схемы, а не данные json.

Вотсхема

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "title": "List of people cars",
  "properties": {
    "car":{
      "type":"array",
      "items": {
        "properties": {
          "name": {
            "type":"string"
          }
        }
      }
    },
    "people": {
      "type":"array",
      "items":{
        "properties": {
          "fullname":{
            "type":"string"
          },
          "cars":{
            "type":"string"
            // somehow validate if the car exist in car properties
          }
        }
      }
    }
  }
}

Вот данные json

{
  "$schema": "./schema.json",
  "car": [
    {
      "name": "Lamborghini"
    }
  ],
  "people": [
    {
      "fullname": "Ucok",
      "cars": "Lamborghini" //check if the car name exist in the car properties
    }
  ]
}

Я ожидаю, что значение свойств автомобилей для объекта people автоматически завершается из списка автомобилей, перечисленных выше

1 Ответ

0 голосов
/ 21 сентября 2019

чтобы проверить, существует ли значение в javascript, вы можете использовать find / findIndex

let test = {
  "$schema": "./schema.json",
  "car": [
    {
      "name": "Lamborghini"
    }
  ],
  "people": [
    {
      "fullname": "Ucok",
      "cars": "Lamborghini" //check if the car name exist in the car properties
    }
  ]
};

test.car.find((item) => item.name === 'Lamborghini'); // will return {name: 'Lamborghini'}
test.car.find((item) => item.name === 'Ferrari'); // will return undefined

test.car.findIndex((item) => item.name === 'Lamborghini'); // will return 0
test.car.findIndex((item) => item.name === 'Ferrari'); // will return -1

, если возвращаемое значение не определено или -1, то значение не существует

...