Как я могу проверить массив объектов с помощью схемы JSON, описывающей отдельные объекты [duplicate]

Пример в реальной жизни: сложная база данных, которая должна отображаться на веб-сайте. Поскольку база данных была спроектирована где-то около 1986 года (!), Многие данные были упакованы по-разному, чтобы сэкономить место на диске.

По мере развития разработчики больше не могли решать сложные запросы данных только в SQL, например, потому что алгоритмы сортировки были необычными.

Существует три разумных решения:

  1. быстро и грязно: отправьте несертифицированные данные на PHP, отсортируйте их там. Очевидно, это очень дорогое решение, потому что это повторяется каждый раз, когда страница называется
  2. записывает плагин в механизм базы данных, но администратор не был готов разрешить использование внешнего кода на своем сервере, или
  3. вы можете обрабатывать данные в программе (C, Perl и т. д.) и выводить HTML. Сама программа входит в / cgi-bin и вызывается веб-сервером (например, Apache) напрямую, а не через PHP.

CGI запускает ваш скрипт в решении №3 и выводит эффект в браузер. У вас есть скорость скомпилированной программы, гибкость языка лучше, чем SQL, и нет необходимости писать плагины на SQL-сервер. (Опять же, это пример, специфичный для SQL и C)

1
задан djsumdog 4 April 2016 в 21:16
поделиться

1 ответ

Вы можете достичь этого, используя ключевое слово anyOf и definitions / $ref, чтобы избежать дублирования.

{
  "type": "object",
  "properties": {
    "assetMetadata": {
      "anyOf": [
        { "$ref": "#/definitions/assetMetaData" },
        {
          "type": "array",
          "description": "...",
          "items": { "#/definitions/assetMetaData" }
        }
      ]
    }
  },
  "definitions": {
    "assetMetadata": {
      "type": "object",
      "additionalProperties": false,
      "properties": { ... }
    }
  }
}
3
ответ дан Jason Desrosiers 20 August 2018 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: