Jackson对整数字段而不是字符串进行多态反序列化

sec*_*oot 10 java json jackson

我熟悉正常的多态反序列化内容,您可以根据某个字段的字符串值反序列化对象.例如:

@JsonSubTypes(
          {
              @JsonSubTypes.Type(value = LionCage.class, name = "LION"),
              @JsonSubTypes.Type(value = TigerCage.class, name = "TIGER"),
          }
         )
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
Run Code Online (Sandbox Code Playgroud)

如果传入对象的"type"字段是整数而不是字符串,有什么方法可以做同样的事情吗?所以在上面的例子中,"LION"和"TIGER"将是1和2.无论出于何种原因,我都无法弄清楚这一点.

另外,我应该如何解决这个问题?似乎它应该是明显的东西.

小智 1

不,这不是通过注释的选项。TypeIdResolver接口接受并返回字符串您可以使用 Jackson 的流 API 通过自定义解析器/序列化器来完成此操作,但这似乎需要大量工作才能将其切换到数字字段。只有当其他人的系统需要时我才会这样做。如果我拥有整个东西,我只会使用您在问题中发布的设置。