Есть ли способ объединить JSON-схему в один файл? - PullRequest
0 голосов
/ 08 мая 2018

Я ищу способ объединить две схемы JSON в одну, вставив одну в качестве поля другой. То есть схема A будет иметь свойство, которое определяется содержимым схемы B.

Чтобы уточнить, я не хочу ссылаться на схему A из схемы B. Я хочу напрямую вставить содержимое B в определенную точку A, чтобы я мог у меня есть один JSON-документ, но я полагаю, что просто «вставить» содержимое в свойство программно было бы недостаточно.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Схема JSON разработана таким образом, что вы можете заменить ссылку всем ее содержимым, и поведение будет таким же, с одним возможным исключением, если вы используете относительные ссылки URI.

Если у вас есть схема типа «A.json»:

{
    "type": "object",
    "properties": {
        "b": {"$ref": "B.json"}
    }
}

И у вас есть "B.json":

{ "type": "string" }

Это можно свернуть в следующее:

{
    "type": "object",
    "properties": {
        "b": { "type": "string" }
    }
}

В одном случае поведение может измениться, и это если вы используете относительную ссылку на URI и URI документа, который вы подставляете, приводит к тому, что ссылка URI разрешает полный URI иначе, чем это было раньше , В этих случаях используйте полный (абсолютный) URI в корне каждой схемы.

0 голосов
/ 08 мая 2018

Я не отвечаю на ваши вопросы, но пытаюсь угадать (может быть, лучше, если вы добавите пример!). Поэтому я думаю, что у вас есть две схемы, такие как:

{ "schema": "A",
   ........
 }

 {"schema": "B",
   .......
  }

Итак, у вас есть два шанса объединить их: -вручную -использование программы

Вручную это тривиально, потому что вам нужно только скопировать и вставить:

 { "schema": "B",
   ........

  "schema_pasted": "A",
   .......
  }

или вы можете использовать некоторую библиотеку для автоматической работы, получая тот же результат (например, GSON https://github.com/google/gson в Java).

...