想知道是否有一种方法可以通过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");