Jackson:如何生成拒绝所有其他内容的 json 架构
2022-09-03 07:52:19
我想生成JSON架构,其中将应用于我拥有的所有类。"additionalProperties" : false
假设我有以下类:
class A{
private String s;
private B b;
public String getS() {
return s;
}
public B getB() {
return b;
}
}
class B{
private BigDecimal bd;
public BigDecimal getBd() {
return bd;
}
}
当我生成架构时,如下所示代码,架构属性仅适用于类。"additionalProperties" : false
A
ObjectMapper mapper = new ObjectMapper();
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);
ObjectSchema schema = schemaGen.generateSchema(A.class).asObjectSchema();
schema.rejectAdditionalProperties();
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
如何生成将应用于所有类的架构?"additionalProperties" : false
示例schema
{
"type" : "object",
"id" : "urn:jsonschema:com.xxx.xxx:A",
"additionalProperties" : false,
"properties" : {
"s" : {
"type" : "string"
},
"b" : {
"type" : "object",
"id" : "urn:jsonschema:com.xxx.xxx:B",
"properties" : {
"bd" : {
"type" : "number"
}
}
}
}
}
注意:我不想逐个生成方案。
有关信息:如果有人有兴趣,我已经打开了此方案的问题,您可以支持解决此问题。生成应拒绝所有其他内容的 json 架构