我为类的方法创建了一个简单的注释。我想以 JSON 格式导出每个注释的值。
例如,我有一个注释:
@Retention( RetentionPolicy.RUNTIME )
@Target( ElementType.METHOD )
public @interface MyAnnotation
{
int someInteger();
String someString();
String[] possibleTypes();
}
然后在我的课堂上我注释我有:
package com.clusin;
public class foo
{
@MyAnnotation(someInteger = 1, someString = "bar", possibleType = { "a","b","c" })
public int doSomeComputation(Object x, Object y)
{
//Do something here.
}
}
使用反射我们可以在运行时获得对这些注解的引用。
所以我的问题是:鉴于这些在运行时获得的注释,是否可以使用杰克逊来序列化注释中包含的值?
我尝试使用 @JsonProperty 注释我的注释,但 ObjectMapper 在调用 ObjectMapper#writeValueAsString 时会引发 JsonMappingException。
org.codehaus.jackson.map.JsonMappingException: No serializer found for class $Proxy5 and no properties discovered to cre
ate BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )
at org.codehaus.jackson.map.ser.StdSerializerProvider$1.failForEmpty(StdSerializerProvider.java:89)
at org.codehaus.jackson.map.ser.StdSerializerProvider$1.serialize(StdSerializerProvider.java:62)
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:315)
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:242)
at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:1846)
at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:1473)
有任何想法吗?
谢谢你的时间。