Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson@JsonIdentityInfo和@JsonIdentityReference和自定义序列化_Java_Json_Jpa_Jackson - Fatal编程技术网

Java Jackson@JsonIdentityInfo和@JsonIdentityReference和自定义序列化

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) 豆参考; } 我序列化了这些实例:

我正在使用jackson将我的对象序列化为JSON。这些对象是JPA实体,因此具有循环关联

因此,我有一个简单的POJO:

私有静态类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实体)。