我使用Jackson来处理JSON对象,并且我希望有一种方法可以从一个类中生成一个模式,并且可以在对象上强制执行。我发现我可以使用以下方法:
JsonSchemaGenerator generator = new JsonSchemaGenerator(mapper);
JsonSchema jsonSchema = generator.generateSchema(DBUser.class);
mapper.writeValueAsString(jsonSchema);
使用这个com.fasterxml.jackson.module.jsonSchema.jsonSchemaGenerator来执行。
从此类生成:
public class DBUser {
private String database="stu";
private int role;
private String username;
private String password;
//setters and getters defined
}
这就给了我这个:
{
"type" : "object",
"id" : "urn:jsonschema:DBUser",
"properties" : {
"database" : {
"type" : "string"
},
"role" : {
"type" : "integer"
},
"username" : {
"type" : "string"
},
"password" : {
"type" : "string"
}
}
}
我需要的是一个必填字段,如下所示:
"required": ["database","role","username"]
但是它没有我需要的必填字段,或者初始值。那么我怎么能得到它呢?
1条答案
按热度按时间5lhxktic1#
您可以通过将
JsonProperty#required
设置为true
来注解pojoDBUser
类字段,以生成具有必需字段的jsonschema:请注意,根据documentation,jsonschema模块支持创建JSON模式(v3),而不支持创建更高的JSON模式版本,因此不支持在更高版本中引入的关键字。