1

我为类的方法创建了一个简单的注释。我想以 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)

有任何想法吗?

谢谢你的时间。

4

0 回答 0