我正在尝试使用Jackson从POJO生成JSON模式。杰克逊有两种方法可以做到这一点。这是第一个:
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,
...
}
}
}
鉴于第一种方法已被弃用,如果可能,我宁愿使用第二种方法。我发现我正在做的事情和互联网上的各种代码片段之间没有任何区别。
我是否缺少配置开关,或者在第二个示例中我只是做错了导致Jackson无法生成预期的架构?