Java Jackson@JsonIdentityInfo和@JsonIdentityReference和自定义序列化
我正在使用jackson将我的对象序列化为JSON。这些对象是JPA实体,因此具有循环关联 因此,我有一个简单的POJO:Java Jackson@JsonIdentityInfo和@JsonIdentityReference和自定义序列化,java,json,jpa,jackson,Java,Json,Jpa,Jackson,我正在使用jackson将我的对象序列化为JSON。这些对象是JPA实体,因此具有循环关联 因此,我有一个简单的POJO: 私有静态类Bean{ 字符串id; 字符串描述; @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,property=“id”,scope=Bean.class) @JsonIdentityReference(alwaysAsId=false) 豆参考; } 我序列化了这些实例:
私有静态类Bean{
字符串id;
字符串描述;
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,property=“id”,scope=Bean.class)
@JsonIdentityReference(alwaysAsId=false)
豆参考;
}
我序列化了这些实例:
Bean a=newbean();
a、 id=“1”;
a、 description=“第一个”;
Bean b=新Bean();
b、 id=“2”;
b、 description=“第二个”;
Bean c=新Bean();
c、 id=“3”;
b、 description=“最后一个”;
//设置参考
a、 ref=b;
b、 ref=c;
c、 ref=a;//圆形的
最后我需要这个JSON:
{
“id”:“1”,
“描述”:“第一个”,
“参考”:{
“id”:“2”,
“描述”:“第二个”,
“参考”:{
“id”:“3”,
“说明”:“最后一个”
“参考”:{
“id”:“1”
}
}
}
}
我需要循环引用仅序列化“id”属性(并省略其他属性),并且“ref”必须继续是对象
有可能吗?只需将ref设置为一个对象,而不需要另一个ref
c.ref = new Bean();
c.ref.id = a.id;
序列化必须保证这一点,而不是开发人员。这只是一个例子,我的真实场景有一个更复杂的序列化(比如带有关联的JPA实体)。