У меня есть следующие классы, как упомянуто ниже:
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))`