我有一个注释,在运行时使用方法时,我希望将它及其所有属性值转换为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));
答案 0 :(得分:0)
找到答案:
使用@JsonGetter
并将其表示的字段名称传递给它。
示例:
public @interface MyAnnotation {
@JsonGetter(value = "name")
String name();
@JsonGetter(value = "age")
Integer age();
}
这将输出为json:{"name":"test","age":21}