Jackson JsonSchema неправильно генерирует схему

Я пытаюсь использовать Джексона для создания схем 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,
      ...
    }
  }
}

Учитывая, что первый метод устарел, я бы предпочел использовать второй, если это возможно. Я не могу найти никаких различий между тем, что я делаю, и тем, что делают различные фрагменты кода в Интернете.

Есть ли какой-то переключатель конфигурации, который мне не хватает, или я просто делаю что-то неправильно во втором примере, из-за чего Джексон не генерирует ожидаемую схему?


person Dave    schedule 09.01.2014    source источник
comment
какую версию jackson-mapper-asl вы используете??   -  person Ashish    schedule 09.01.2014
comment
Все компоненты Jackson имеют версию 2.2.3.   -  person Dave    schedule 09.01.2014
comment
Это странно. У меня работает в этой версии. Не могли бы вы также попробовать эту строку mapper.acceptJsonFormatVisitor(Entity.class, visitor)? См. также этот вопрос: stackoverflow.com /вопросы/17783909/   -  person Michał Ziober    schedule 10.01.2014
comment
Да, я тоже пробовал это - на самом деле это была одна из ссылок, которые я нашел, пытаясь узнать, сталкивался ли кто-нибудь еще с этой проблемой. Это не изменяет возвращаемые данные.   -  person Dave    schedule 10.01.2014
comment
Уточните, пожалуйста, как вы получили вывод во втором примере? Кажется, вы напечатали не schemaString содержимое.   -  person Eugene Evdokimov    schedule 14.01.2014
comment
Оба результата генерируются одинаково, используя System.out.println(schemaString) на стороне сервера — эта строка кода не изменилась. Возвращенные данные были проверены путем обращения к конечной точке Джерси, которая содержит рассматриваемый код, а затем проверки возвращенной строки JSON на вызывающем клиенте.   -  person Dave    schedule 15.01.2014