您可以使用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);
}
}