杰克逊的@JsonIdentityInfo,广度优先

时间:2016-06-07 06:43:26

标签: java json jackson jackson-modules jsonidentityinfo

我正在使用Jackson的@JsonIdentityInfo从JSON中删除循环对象。

假设以下是Java类 Class A, B, C 以下是结构,

Class A{
     int id;
     B b;
     C c;
}
Class B{
     int id;
     C c;
}

我的目标是(A)

{
     id:1,
     b:{
          id: 2,
          c:{
            id: 3
            }
     },
     c: {
        id: 3
     }
}

正在将对象更改为

{
         id:1,
         b:{
              id: 2,
              c:{
                id: 3
                }
         },
         c: 3
    }

因为C具有相同的id, 我希望这个实现为广度优先,即第一级应该是删除对象并给予属性,但深度级别应该这样做,有没有办法让它像下面这样?

{
             id:1,
             b:{
                  id: 2,
                  c:3
             },
             c: {id:3}
        }

1 个答案:

答案 0 :(得分:2)

不,序列化继续深度优先,并且在编写JSON之前需要更改内存中的整个输出图形。