java - 使用 Avro 文件中的 @JsonTypeInfo 注释反序列化类时杰克逊“InvalidTypeIdException:无法解析类型 ID”
问题描述
我一直试图了解如何jackson-dataformat-avro
解析类型 ID。我已经成功地序列化了一个类,现在尝试使用相同的模式再次反序列化它。它有一个"name"
类型为私有的字段LocalizedString
。但我得到以下异常:
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'org.example.LocalizedString' as a subtype of [simple type, class org.example.LocalizedString]: known type ids = [LocalizedString] (for POJO property 'name')
该类LocalizedString
如下所示:
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, property="type")
@Value
public class LocalizedString {
private Map<Language, String> strings;
...
}
在 Avro 模式文件中,我输入了name
如下字段:
{
"name": "name",
"type": {
"type": "record",
"namespace": "org.example",
"name": "LocalizedString",
"fields": [
{
"name": "type",
"type": "string"
},
{
"name": "strings",
"type": ["null", {
"type": "map",
"values": "string"
}]
}
]
}
}
如果我省略@JsonTypeInfo
注释,那么它可以工作。但是,我将它用于其他地方的 Json 序列化,所以我很想保留它。
Avro 的具体问题是什么?
strings
而且地图的键不是字符串可能也是有问题的?
解决方案
推荐阅读
- html - 如何使用 flexbox 移动块中的第三个元素?
- c++ - 两种语法 new( int[ size ] ) 和 new int[ size ] 之间的区别
- amazon-web-services - 删除 s3 存储桶中的奇怪对象
- python - 无法编辑循环内的列表项
- python - 将 3D numpy 数组保存为 .obj 文件
- node.js - Node Express 上传带有附加数据的文件
- python - mariadb-devel 在使用 yum 时无法在 Cent OS 7 上运行
- javascript - 引用对象属性的最佳方式
- grpc - grpc-go 如何处理取消示例
- java - 在 javadoc 中禁用名称前缀