Я пытаюсь использовать Джексона для создания схем JSON из POJO. У Джексона есть два способа сделать это. Это первое:
ObjectMapper mapper = new ObjectMapper();
JsonSchema schema = mapper.generateJsonSchema(Entity.class);
String schemaString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
Это нормально - он генерирует именно то, что вы ожидаете.
{
"type" : "object",
"properties" : {
"pedigreeIds" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
...
}
}
Однако этот подход устарел в пользу второго, который использует jackson-module-jsonschema:
ObjectMapper mapper = new ObjectMapper();
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
mapper.acceptJsonFormatVisitor(mapper.constructType(Entity.class), visitor);
JsonSchema schema = visitor.finalSchema();
String schemaString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
Использование этого кода выдает следующее для того же класса сущностей:
{
"$ref" : null,
"$schema" : null,
"disallow" : null,
"id" : null,
"required" : null,
"description" : null,
"title" : null,
"enums" : [ ],
"additionalProperties" : null,
"dependencies" : [ ],
"patternProperties" : { },
"properties" : {
"observationTime" : {
"$ref" : null,
"$schema" : null,
"disallow" : null,
...
}
}
}
Учитывая, что первый метод устарел, я бы предпочел использовать второй, если это возможно. Я не могу найти никаких различий между тем, что я делаю, и тем, что делают различные фрагменты кода в Интернете.
Есть ли какой-то переключатель конфигурации, который мне не хватает, или я просто делаю что-то неправильно во втором примере, из-за чего Джексон не генерирует ожидаемую схему?
mapper.acceptJsonFormatVisitor(Entity.class, visitor)
? См. также этот вопрос: stackoverflow.com /вопросы/17783909/ - person Michał Ziober   schedule 10.01.2014schemaString
содержимое. - person Eugene Evdokimov   schedule 14.01.2014System.out.println(schemaString)
на стороне сервера — эта строка кода не изменилась. Возвращенные данные были проверены путем обращения к конечной точке Джерси, которая содержит рассматриваемый код, а затем проверки возвращенной строки JSON на вызывающем клиенте. - person Dave   schedule 15.01.2014