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



我有一个注释,在运行时使用方法时,我想将其转换为 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}

相关内容

  • 没有找到相关文章

最新更新