JsonMappingException:已经有POJO的ID(JsonMappingExcepti

2019-07-21 16:30发布

试图用@JsonIdentityInfo杰克逊注释工作时,我有一个错误。 当我尝试反序列化对象,我得到了如下因素除外:

无法读取JSON:已经有POJO为ID(java.lang.Integer中)[1](通过参考链:eu.cobiz.web.domain.Site [ “运营商”] - > eu.yavix.web.domain.Account [ “图像”] - > eu.cobiz.web.domain.Image [ “@图像”]);嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException: 已经有POJO为ID(java.lang.Integer中) 1](通过参考链:eu.yavix.web.domain.Site [ “运营商”] - > eu.cobiz.web.domain.Account [ “图像”] - > eu.cobiz.web.domain.Image [” @图片”])

我想反序列化JSON的样子:

{
"@Site": 1,
"siteId": 1,
"name": "0",
"address": {
    "@Address": 2,
    "addressId": 4,
    "number": "22"
},
"operators": [
    {
        "accountId": 1,
        "email": "user982701361@yavix.eu",
        "image": {
            "@Image": 1,
            "imageId": 1,
            "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png"
        }
    },
    {
        "accountId": 2,
        "email": "user174967957@yavix.eu",
        "image": {
            "@Image": 2,
            "imageId": 2,
            "uri": "http://icons.iconarchive.com/icons/deleket/purple-monsters/128/Alien-awake-icon.png"
        }
    }
]
}

我的域对象都被注解

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@Image")

问题出现以来,如果我删除的问题消失了注解@Id注释(像我一样帐户),但在我的理解中的新功能是有用的循环依赖至极是在其他情况下有用的我。 不应该有2个图像之间的冲突,因为他们是differente对象。

有谁知道如何解决或者有什么问题的想法?

Answer 1:

您应该使用scope注释的ID时参数。 然后,解串器将确保该ID是范围内唯一。

从注释类型JsonIdentityInfo

范围被用来定义一个对象Id的适用性:所有ID必须是在其范围内是唯一的; 其中范围被定义为这个值和发电机类型的组合。

例如@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class,property="@id", scope = Account.class)



Answer 2:

为了避免冲突的ID尝试使用ObjectIdGenerators.PropertyGenerator.classObjectIdGenerators.UUIDGenerator.class代替ObjectIdGenerators.IntSequenceGenerator.class



文章来源: JsonMappingException: Already had POJO for id