Схема JSON ничего не знает о том, где она находится в файле, и ничего о других файлах в папке по умолчанию.
Похоже, используемая вами библиотека распознает это и предлагает вамиспользуйте специальный справочный протокол (classpath
), чтобы легко ориентироваться на другие файлы в папке:
https://github.com/everit-org/json-schema#loading-from-the-classpath
По мере роста ваших схем вы захотите разделить их нанесколько исходных файлов и соедините их ссылками "$ ref".Если вы хотите сохранить схемы в classpath (вместо того, чтобы, например, обслуживать их через HTTP), то рекомендуется использовать протокол classpath: для того, чтобы схемы ссылались друг на друга.
Это неЭто не то, что определено схемой JSON.
Более распространенный подход заключается в загрузке всех схем, которые вы собираетесь использовать, и разрешении локального разрешения, когда у вас уже есть файлы.Используемая вами библиотека также поддерживает это: https://github.com/everit-org/json-schema#registering-schemas-by-uri
Иногда полезно работать с предварительно загруженными схемами, которым мы назначаем произвольный URI (возможно, uuid) вместо загрузки схемы черезURL.Это можно сделать, назначив схемы URI с помощью метода #registerSchemaByURI () загрузчика схемы.Пример:
SchemaLoader schemaLoader = SchemaLoader.builder()
.registerSchemaByURI(new URI("urn:uuid:a773c7a2-1a13-4f6a-a70d-694befe0ce63"), aJSONObject)
.registerSchemaByURI(new URI("http://example.org"), otherJSONObject)
.schemaJson(jsonSchema)
.resolutionScope("classpath://my/schemas/directory/")
.build();
Есть дополнительные соображения, если вы собираетесь использовать ваши схемы другими.Если это так, оставьте комментарий, и я расширю.