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