Как исключить типы Примитивов из необходимого списка Json Схема (версия 4) - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть следующие классы, как упомянуто ниже:

public class Test1 {

    private  String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age= age;
    }
}

JsonSchema генерирует следующую схему:

{
  "$schema" : "http://json-schema.org/draft-04/schema#",
  "title" : "Test 1",
  "type" : "object",
  "additionalProperties" : false,
  "properties" : {
    "name" : {
      "type" : "string"
    },
    "age" : {
      "type" : "integer"
    }
  },
  "required" : [ "age" ]
}

Как вы можете видеть по умолчанию, его примитивные поля (int) помещаются в обязательный список схемы.
Я использую следующую библиотеку для Json Генерация схемы: https://github.com/mbknor/mbknor-jackson-jsonSchema.

Даже если я укажу значение по умолчанию для примитивного поля, оно останется в обязательном поле. Подскажите, пожалуйста, как я могу удалить примитивное поле из необходимого списка. Я использую следующий код для генерации json схемы: ObjectMapper mapper = new ObjectMapper ();

JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator(mapper);

JsonNode jsonSchema = jsonSchemaGenerator.generateJsonSchema(Test1.class);

try {
    System.out.print(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema));
} catch (JsonProcessingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Я не думаю, что это возможно. Я просмотрел код библиотеки, они используют следующие проверки:

val requiredProperty: Boolean = if (propertyType.getRaw`Class.isPrimitive || jsonPropertyRequired || validationAnnotationRequired(prop))`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...