java - 使用 Jackson 将 JSON 与包装在字符串中的 JSON 反序列化
问题描述
我收到 JSON 和字符串包装的 JSON 的混合。例如:
{
"shapes": [
{
"type": "1",
"shape": "{\"w\":3,\"h\":6}"
},
{
"type": "2",
"shape": "{\"radius\":5}"
}
]
}
我想用不同的对象类型反序列化它。
abstract class Shape {
}
@Data
class Rectangle extends Shape {
private int w;
private int h;
}
@Data
class Circle extends Shape {
private int radius;
}
@Data
class NodeParent {
private Integer type;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Rectangle.class, name = "1"),
@JsonSubTypes.Type(value = Circle.class, name = "2")
})
private Shape shape;
}
@Data
class Root {
private List<NodeParent> shapes;
}
这种方法适用于普通 JSON(没有字符串包装)
但是因为我的有效载荷失败了,因为它在“形状”中看到了一个字符串。我可以为此使用自定义反序列化器。但是我必须在那里映射所有类型。我更喜欢使用注释。
这可以做到吗?
解决方案
推荐阅读
- kubernetes - HostOutOfMemory 警报正在普罗米修斯的松弛通道中触发
- django - 如何使所有模板都可以使用 url 变量
- kubernetes - 使用 terraform 在 kubernetes 上计划重启
- matrix - 可以使用 AWK 数组来获得相关矩阵中的最大簇吗?
- firefox - 语音调度程序不会在 manjaro 上启动
- android - 如何在 PageView 多个页面中维护单独的表单键?
- google-sheets-api - 如何在谷歌api中获取只有谷歌表格范围的用户电子邮件
- mpandroidchart - 关于 MPAndroidChart XAxis 标签
- java - 为什么我的 jGRASP 项目文件如此臃肿?
- google-contacts-api - 无法验证谷歌 api