1

我的目标是避免两次创建同一个对象。我想反序列化包含相同子对象的两个对象的数组,这是我要反序列化的 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 来实现我的目标,但它并没有完成这项工作。我总是将此数组发送到服务器,它会创建两个不同的包。

我在做什么错了?

4

2 回答 2

1

为了解决这个问题,我只需要发送第一个相关的包裹,下次只发送ID号。IE。

[
   {
      @id: 98,
      relatedPackage: {@id:99, receivedOn:1374012807237, packingTypeFk:1,…}
   },
 {
      @id: 101,
      relatedPackage: 99
   }
]
于 2013-07-17T22:15:36.470 回答
0

据我所知,“身份”信息不强制实例身份。它仅确保符合该标识的两个对象被视为相等。

您可以使用 Jackson 实现自定义反序列化器。然后,您还将实现类实例控制(通过实例管理器或在值类本身内)。高温高压

于 2013-07-17T18:52:05.127 回答