183.4.4. polymorphic deserialization 的默认映射


如果一个给定的 Java 类 com.example.MyClass 没有被列入白名单,则仍可对类的实例进行序列化,但在接收过程中,实例将使用通用的默认映射进行反序列化。

当 Jackson 中启用了 polymorphic 对象映射时,对对象的编码有几种替代方法:

  • With @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY):

    {"@class":"com.example.MyClass", "property1":"value1", "property2":"value2", ...}

    在本例中,实例将反序列化为具有 属性的对象

  • With @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.WRAPPER_ARRAY):

    ["com.example.MyClass", {"property1":"value1", "property2":"value2", ...}]

    在本例中,实例将反序列化为含有两个字段的 JSON 数组:

    • 带有com.example.MyClass的字符串
    • 具有 两个属性(或更多)属性的对象
  • 使用 @JsonTypeInfo (use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.WRAPPER_OBJECT):

    {"com.example.MyClass":{"property1":"value1", "property2":"value2", ...}}

    在本例中,实例将按单个字段 com.example.MyClass 序列化为 JSON 映射,其值为具有两个(或更多)属性的对象。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.