java - jackson 的@JsonIdentityInfo 广度优先

标签 java json jackson jackson-modules jsonidentityinfo

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

假设以下是 Java 类 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}
        }

最佳答案

不,序列化是按深度优先进行的,而改变这一点可能需要在写入 JSON 之前在内存中缓冲整个输出图。

关于java - jackson 的@JsonIdentityInfo 广度优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37672242/

相关文章:

java - 最佳实践 : how to return keyset of a map from a method in java

java - 是否可以通过 JPA 创建、删除或更新 Oracle DB 用户?

arrays - 在 Go 中序列化混合类型的 JSON 数组

java - Jackson 无法在 Android 上加载 JDK7 类型

java - 使用java打开包含双引号的链接

java - 泰博EMS : not acknowledge message

java - Jackson 会抛出循环异常吗?

java - 如何从json树反序列化?

php - 在 PHP 中按数组键的值对字典中的数组进行排序

java - 其余 Jersey json 编码