如何使用Jackson / ObjectMapper将注释(其所有diff属性)转换为JSON对象?

时间:2017-08-04 19:20:47

标签: java json annotations jackson objectmapper

我有一个注释,在运行时使用方法时,我希望将它及其所有属性值转换为JSON对象。

注释:

public @interface MyAnnotation {
    String name();
    Integer age();
}

使用它:

public class MyClass {
    @MyAnnotation(name = "test", age = 21)
    public String getInfo()
    { ...elided... }
}

MyClass类型的对象上使用反射并从其getInfo方法获取注释时,我希望能够将注释转换为JSON。但它没有任何字段(因为@interfaces不能有字段),那么有没有办法配置ObjectMapper以将方法用作属性呢?

//This just prints {}
new ObjectMapper().writeValueAsString(method.getAnnotation(MyAnnotation.class));

1 个答案:

答案 0 :(得分:0)

找到答案:

使用@JsonGetter并将其表示的字段名称传递给它。

示例:

public @interface MyAnnotation {

    @JsonGetter(value = "name")
    String name();

    @JsonGetter(value = "age")
    Integer age();
}

这将输出为json:{"name":"test","age":21}