java - Jackson 中的多态反序列化基于整数,而不是字符串

标签 java json jackson json-deserialization jackson-databind

通常,当使用 Jackson 进行多态反序列化时,我有一个映射到类的字符串字段,并且可以这样做。

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "methodName")
@JsonSubTypes({
    @JsonSubTypes.Type(value = MyFirstClass.class, name = "firstClassName"),
    @JsonSubTypes.Type(value = MySecondClass.class, name = "secondClassName")}) 

如果该值是整数而不是字符串,我找不到任何简单的示例来说明如何执行此操作。 例如,如果我的 JSON 包含“methodName”:1,而不是“methodName”:“firstClassName”,我将如何选择要反序列化到哪个类?

最佳答案

没有“简单”的方法可以做到这一点。您必须编写自己的序列化机制实现,以及反序列化机制的实现。这种实现的危险如此之多,因此您最好只引用您的 typeinfo 属性并将其用作字符串。

关于java - Jackson 中的多态反序列化基于整数,而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978457/

相关文章:

java - Android App中的C/C++代码是如何执行的?

java - 尝试用空格分割字符串

将 CSV 转换为 GeoJSON 的 Python 脚本

json - Angular 6 ngFor 在嵌套 JSON 上选择对象

c# - 使用带有 json 补丁的 ASP.NET Core 更新嵌套元素

Java输入错误: Syntax error near unexpected token

java - 写一个java程序每天重启glassfish

java - 关于 Jackson 转换 Java 数据类型

java - 无法配置 Jackson 混音

java - 为什么在没有默认构造函数的情况下将 JSON 编码的字符串转换为 Java 类实例会失败?