java - 如何使用 Jackson 序列化注释

标签 java serialization annotations jackson

我有一个简单的注释类:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface WebService { // with methods}

还有一个pojo

class Pojo {
    Webservice webservice;
}

每当我尝试序列化 Pojo 时,除了 Webservice 字段之外的所有字段都会被序列化。

我对反序列化不感兴趣,只对序列化感兴趣。

这是 jackson 的限制吗?

最佳答案

问得好。如果您在注释类型方法上放置 @JsonProperty 注释,则序列化工作正常。这是一个例子:

@JacksonAnnotationSerialization.MyAnnotation(a = "abc", b = 123)
public class JacksonAnnotationSerialization {

    @Retention(RetentionPolicy.RUNTIME)
    @interface MyAnnotation {
        @JsonProperty
        String a();
        @JsonProperty
        int b();
    }

    static class Thing {
        public final String field;
        public final MyAnnotation myAnnotation;

        Thing(final String field, final MyAnnotation myAnnotation) {
            this.field = field;
            this.myAnnotation = myAnnotation;
        }
    }

    public static void main(String[] args) throws JsonProcessingException {
        final ObjectMapper objectMapper = new ObjectMapper();
        final MyAnnotation annotation
                = JacksonAnnotationSerialization.class.getAnnotation(MyAnnotation.class);
        final Thing thing = new Thing("value", annotation);
        System.out.println(objectMapper.writeValueAsString(thing));
    }
}

输出:

{"field":"value","myAnnotation":{"a":"abc","b":123}}

关于java - 如何使用 Jackson 序列化注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898773/

相关文章:

java - Play Framework 注解顺序

java - PHP Java 组合进行多线程处理 - 好还是坏?

java - 当我在java中创建一个对象时,jvm中到底发生了什么?

javascript - 无法获取存储在 json 字符串中的 html 字符串

php - 编码表单数据的最佳方式是什么?

java - 泛型类型的 TYPE_USE 注释未编译到类文件中

java - 使用 Ant : ClassNotFoundException: org. junit.Test 运行 Android JUnit 测试

java - 如何从 hashCode 获取字符串

c# - 反序列化的ServiceStack时间

ios - 更改 MKmapView 中图钉的颜色会将新图钉图像以及当前位置变成旧图钉图像?