无法使用 jackson 反序列化包含 2 个具有相同 ID 的对象的 Json

2024-04-13

我使用 jackson JsonIdentityInfo 来处理 spring mvc 中的递归对象引用。 我遇到一个问题,即无法反序列化包含 2 个具有相同 ID 的对象的 Json。

{

    "organizations": [
        {
            "organizationId": 1,            
            "organizationName": "org1",
            "enterprise": {
                "enterpriseId": 1,              
                "enterpriseName": "ent1",
                "organizations": null
            }
        },
        {
            "organizationId": 2,            
            "organizationName": "org2",
            "enterprise": 1
        }
    ]
}

如果您看到上面的内容,两个组织都映射为企业“1”。对于第一个组织,它是整个企业对象,但对于组织 2,它仅提供 ID。 我还需要获取组织 2 的整个对象。

我的 POJO 声明:

@Entity
@Table(name = "organization")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "organizationId")
public class Organization implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "organization_id")
    private Long organizationId;

    ...

    @ManyToOne
    @JoinTable(name = "enterprise_organization", joinColumns = {
            @JoinColumn(name = "organization_id") }, inverseJoinColumns = { @JoinColumn(name = "enterprise_id") })
    private Enterprise enterprise;

    ...
}

@Entity
@Table(name = "enterprise")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "enterpriseId")
public class Enterprise extends BaseEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "enterprise_id")
    private Long enterpriseId;
    ...

    @OneToMany(mappedBy = "enterprise")
    private List<Organization> organizations;
    ...
}

我搜索了谷歌和SO,但没有运气。

反序列化包含 2 个具有相同 ID 的对象的 Json 需要进行哪些更改?


经过多次尝试,@JsonIgnoreProperties 解决了我的问题。

示例:“@JsonIgnoreProperties(allowSetters = true, value = {“enterprise”})”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 jackson 反序列化包含 2 个具有相同 ID 的对象的 Json 的相关文章

随机推荐