次のようにgenerateJsonSchemaメソッドを使用できます
try{
ObjectMapper json=new ObjectMapper();
json.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
System.out.println(json.generateJsonSchema(University.class).toString());
}catch(Exception e){
throw new RuntimeException(e);
}
これにより、フィールドのデータ型を取得するために読み取ることができる json スキーマが生成されます。このメソッドはJSONスキーマを生成するため、JSON で許可されているデータ型 (文字列、数値、ブール値、オブジェクト、配列、および null) のみを使用することに注意してください。
Java タイプが必要な場合は、リフレクションを使用する必要があります。循環参照、配列などの複雑な問題があることに注意してください。タイプを識別しようとしているプロパティの名前がわかっている場合は、これに似たことができます。「principal.name」のようなパラメーターを渡すと、ネストされたプロパティで機能します
private Class<?> getPropertyType(Class<?> clazz,String property){
try{
LinkedList<String> properties=new LinkedList<String>();
properties.addAll(Arrays.asList(property.split("\\.")));
Field field = null;
while(!properties.isEmpty()){
field = clazz.getDeclaredField(properties.removeFirst());
clazz=field.getType();
}
return field.getType();
}catch(Exception e){
throw new RuntimeException(e);
}
}