ジャクソンのJSONスキーマモジュールを使用する場合、完全なグラフをシリアル化するのではなく、自分のモデルクラスのいずれかが見つかるたびに停止し、クラス名を使用して別のスキーマ。 jackson-module-jsonSchemaソースの適切な場所に案内して、手直しを開始できますか?ここでJackson:参照付きスキーマの生成
は、問題を説明するためにいくつかのコードです:
public static class Zoo {
public String name;
public List<Animal> animals;
}
public static class Animal {
public String species;
}
public static void main(String[] args) throws Exception {
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
ObjectMapper mapper = objectMapperFactory.getMapper();
mapper.acceptJsonFormatVisitor(mapper.constructType(Zoo.class), visitor);
JsonSchema jsonSchema = visitor.finalSchema();
System.out.println(mapper.writeValueAsString(jsonSchema));
}
出力:
{
"type" : "object",
"properties" : {
"animals" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : { <---- Animal schema is inlined :-(
"species" : {
"type" : "string"
}
}
}
},
"name" : {
"type" : "string"
}
}
}
所望の出力:
{
"type" : "object",
"properties" : {
"animals" : {
"type" : "array",
"items" : {
"$ref" : "#Animal" <---- Reference to another schema :-)
}
},
"name" : {
"type" : "string"
}
}
}
私のためには機能しませんでした。解決済みではなくReferenceSchemaが生成されます。 –