Я намерен преобразовать мои POJO
s в JSON Schema
.
. В существующих POJO
s у нас есть аннотации из пакета codehaus
: @JsonProperty("address")
, где соответствующий импорт:
import org.codehaus.jackson.annotate.JsonProperty;
Я не могу использовать codehaus
api для генерации схемы, так как у нас есть рекурсивная структура JSON
, и я получаю StackOverflowError
.
Итак, я попытался использоватьfasterxml
jackson-module-jsonschema
API
, чтобы сделать это, что работает нормально.
Пример вывода, который я получаю:
"Registration" : {
"type" : "object",
"id" : "urn:jsonschema:com:xyz.abc.Address",
}
У меня есть два требования:
Помимо «type» и «id», я также хочу иметь атрибут description. Я могу добавить атрибут @JsonPropertyDescription
, который будет работать, но тогда каждое свойство будет иметь одну аннотацию из codehaus
и другую из пакета fasterxml
. Есть ли в codehaus
эквивалентная аннотация, которая может быть использована для этой цели?
Есть ли способ иметь только неквалифицированное имя класса в атрибуте "id" (только«Адрес», т.е. без уточненного пути к объекту «xyz.abc.Address» и без «urn: jsonschema»)?
Код для генерации схемы с использованием fasterxml
:
ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
JsonSchema schema = schemaGen.generateSchema(DashboardDef.class);
String generatedJsonSchema = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);