gpt4 book ai didi

java - 使用 Jackson 进行多态反序列化,而 'type' 和 'value' 是单独的字段

转载 作者:行者123 更新时间:2023-12-01 22:45:40 28 4
gpt4 key购买 nike

API 返回以下 JSON:

"objectA":{
"type":"typeA",
"value":{
"propertyA":{
"propertyAA":"3000",
"propertyAB":3
},
"propertyB":10
}
}

虽然“类型”可以是多种类,而“值”字段包含该对象的属性。 Jackson 是否提供了开箱即用/基于注释的解决方案来解决这个问题?

在 API 提供商上次更新之前,API 返回:

"objectA":{"type":"typeA","propertyA":{"propertyAA":"3000","propertyAB":3},"propertyB":10}

我能够使用以下方式解析:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({ @Type(value = TypeA.class, name = "typeA"),
[...]

如上所述,我想知道是否有一个 Jackson 配置允许配置包含类型的字段和包含实际对象的字段。

非常感谢您并致以最诚挚的问候!

最佳答案

我通过引入一个处理“类型”和“值”字段的包装对象来临时解决了这个问题。对于“值”字段,我使用“EXTERNAL_PROPERTY”方法,如下所示:Jackson JsonTypeInfo.As.EXTERNAL_PROPERTY doesn't work as expected

可以工作,但仍然感觉不是很干净:(所以如果有人知道更好的方法请分享!:)

关于java - 使用 Jackson 进行多态反序列化,而 'type' 和 'value' 是单独的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58474825/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com