如何使用Jackson通过java注释名称调用类方法



想知道是否有一种方法可以通过Jackson注释属性名称(例如"value"(而不是方法名称(例如,getName()(来调用getter方法,或者将我指向正确的方向?

public class Person {
private String name;
@JsonProperty("value")
public String getName() {
return name;
}
@JsonProperty("value")
public void setSet(String name) {
this.name = name;
}
}

我的目标是通过遍历java注释属性名列表来调用多个方法。

如果您真的想直接识别和调用方法,可以使用反射。类似(没有例外的管理(:

SomeObject object = ...;                                                
Class<?> type = object.getClass();                                      
          
for (Method method : type.getMethods()) {                               
JsonProperty property = method.getAnnotation(JsonProperty.class);   
          
if (property != null && property.value().equals("value")) {         
if (method.getParameterCount() == 0) {                          
Object value = method.invoke(object);                       
...                                                         
}                                                               
}                                                                   
}

这是Allen D.的回答

Map<String,Object> map = new ObjectMapper.convertValue(person, new TypeReference<Map<String,Object>>(){});
String s = (String) map.get("value");

相关内容

  • 没有找到相关文章

最新更新