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

How to call class method by java annotation name with Jackson?

想知道是否有一种方法可以通过 Jackson 注释 属性 名称(例如 "value")而不是方法名称(例如 [=14] 来调用 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");