我的目标是避免两次创建同一个对象。我想反序列化包含相同子对象的两个对象的数组,这是我要反序列化的JSON对象
[
{
@id: 98,
relatedPackage: {@id:99, receivedOn:1374012807237, packingTypeFk:1,…}
},
{
@id: 101,
relatedPackage: {@id:99, receivedOn:1374012807237, packingTypeFk:1,…}
}
]
这是POJO
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class Package extends StampedModel {
...
}
在上一个代码中,您可以看到我将注释@JsonIdentityInfo用于实现我的目标,但它不能完成这项工作。总是我将这个数组发送到服务器,它会创建两个不同的包。
我在做什么Wrongo?
答案 0 :(得分:1)
要解决这个问题,我只需要发送第一个相关的包一次,下次只发送ID号。即
[
{
@id: 98,
relatedPackage: {@id:99, receivedOn:1374012807237, packingTypeFk:1,…}
},
{
@id: 101,
relatedPackage: 99
}
]
答案 1 :(得分:0)
据我所知,“身份”信息不会强制实例身份。它只能确保符合该身份的两个对象被认为是相等的。
您可以实施custom deserializers with Jackson。然后,您还将实现类instance control(通过实例管理器,或在值类本身内)。 HTH