【问题标题】:Ignore field of field when serializing序列化时忽略字段的字段
【发布时间】:2018-07-08 02:01:54
【问题描述】:

如果我有两个有关系的类:

class A {
  long id;
  B b;
}

class B {
  long id;
  int property;
}

我的问题是:序列化A的时候,希望只得到b的id,而不是整个b对象。但是,我不希望这影响 B 本身的序列化。换句话说,当序列化 B 类的实例时,结果应该同时包含 id 和 property。

知道杰克逊如何做到这一点吗?谢谢!

【问题讨论】:

    标签: jackson


    【解决方案1】:

    您可以使用@JsonIgnoreProperties。注释通常用于类级别,但也适用于属性。当应用于属性时,它用于忽略带注释的属性内的属性。 . 这是我的测试课

    public static void main(String[] args)
    {
        ObjectMapper mapper = new ObjectMapper();
    
        B b = new B();
        b.id = 2L;
        b.property = 3;
        A a = new A();
        a.id = 1L;
        a.b = b;
    
        try {
            System.out.println("B:");
            System.out.println( mapper.writeValueAsString(b));
            System.out.println("A:");
            System.out.println( mapper.writeValueAsString(a));
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    
    }
    
    public static class A {
        public long id;
        @JsonIgnoreProperties("property")
        public B b;
    }
    
    public static class B {
        public long id;
        public int property;
    }
    

    输出:

    B:
    {"id":2,"property":3}
    A:
    {"id":1,"b":{"id":2}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多