首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jackson的@JsonTypeInfo(use = Id.CUSTOM,include = As.PROPERTY,property = "type")读取除"type“之外的所有JSON字段

Jackson的@JsonTypeInfo注解用于在JSON序列化和反序列化过程中处理多态类型。它提供了一种机制,可以将类型信息嵌入到JSON中,以便在反序列化时正确地恢复对象的类型。

具体来说,该注解有三个参数:

  • use:指定类型信息的使用方式。在这里,我们使用Id.CUSTOM,表示使用自定义的方式来处理类型信息。
  • include:指定类型信息的包含方式。在这里,我们使用As.PROPERTY,表示将类型信息作为一个属性包含在JSON中。
  • property:指定类型信息的属性名。在这里,我们将类型信息作为一个名为"type"的属性。

使用@JsonTypeInfo注解后,Jackson在序列化和反序列化过程中会自动处理类型信息。当反序列化JSON时,Jackson会根据"type"属性的值来确定要实例化的对象类型。而在序列化JSON时,Jackson会将对象的类型信息写入JSON中,以便在反序列化时正确地恢复对象的类型。

这个注解在处理多态类型的场景中非常有用。例如,当我们有一个父类和多个子类时,可以使用@JsonTypeInfo注解来确保在序列化和反序列化时能够正确地处理子类的类型信息。

腾讯云提供了一系列与云计算相关的产品,其中包括对象存储 COS、云服务器 CVM、云数据库 CDB、云原生容器服务 TKE 等。这些产品可以帮助开发者在云计算领域构建和管理各种应用。你可以通过腾讯云官网了解更多关于这些产品的详细信息和使用指南。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 用了几年 Fastjson,我最终替换成了Jackson

    Double对象 Feature.UseBigDecimal 开启 DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS 关闭 建议开启 解析时忽略未知字段继续完成解析...支持不同级别的AUTO TYPE,但是这个功能容易导致安全漏洞,强烈建议使用ObjectMapper.disableDefaultTyping()设置为只允许@JsonTypeInfo生效 解析时将未用引号包含...关闭 建议关闭,排序会影响序列化性能(fastjson在反序列化时支持按照field顺序读取解析,因此排序后json串有利于提高fastjson解析性能,但jackson并没有该特性) 把\t做转义输出...() default ""; // 反序列化某个接口或抽象类或父类子类时指定根据哪个字段值和子类typeName相等来决定具体实现类,等价于jackson@JsonTypeInfo.use...() = Id.CUSTOM + @JsonTypeInfo.property() String typeKey() default ""; // 反序列化某个接口或抽象类或父类子类时指定可以反序列化子类类型

    5.4K10

    用了几年 Fastjson,最终替换成了 Jackson

    // 对属性进行打标,便于在序列化时进行exclude或include,等价于jackson@JsonView String label() default "";...// 反序列化多态类型时,如果根据其他typeName等方式无法找到正确子类时,默认使用子类,等价于jackson@JsonTypeInfo.defaultImpl() Class<?...typeName() default ""; // 反序列化某个接口或抽象类或父类子类时指定根据哪个字段值和子类typeName相等来决定具体实现类,等价于jackson@JsonTypeInfo.use...() = Id.CUSTOM + @JsonTypeInfo.property() String typeKey() default ""; // 反序列化某个接口或抽象类或父类子类时指定可以反序列化子类类型...()值,jackson没有对应特性 boolean serializeEnumAsJavaBean() default false; // 指定json和Java bean之间字段名称映射策略

    2.2K30

    (63) 实用序列化: JSONXMLMessagePack 计算机程序思维逻辑

    Java SDK中对这些格式支持有限,有很多第三方类库,提供了更为方便支持,Jackson是其中一种,它支持多种格式,包括XML/JSON/MessagePack等,本文就来介绍如果使用Jackson...与Java标准序列化机制一样,它也使用反射,默认情况下,它会保存所有声明为public字段,或者有public getter方法字段。...解决方法是在输出中包含类型信息,在基类Shape前使用如下注解: @JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type...修改字段名称 对于XML/JSON格式,有时,我们希望修改输出名称,比如对Student类,我们希望输出字段名变为对应中文,可以使用@JsonProperty进行注解,如下所示: public class...,需要做额外配置,配置方式主要是注解,我们介绍了Jackson很多典型注解,大部分注解适用于所有格式。

    4.8K80

    MySql数据库列表数据分页查询、全文检索API零代码实现

    实现 filter string 智能查询条件,格式为Condition对象JSON序列化后字符串 orderby string 排序方式,ASC和DESC offset int32 分页开始位置 limit...(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY,property = "name") @JsonSubTypes(value...字段选择select [select1] 默认情况下会选择所有字段,select如果不指定表示所有的意思 [select2] 如果指定了字段,就查询部分字段,比如只查询id,name和mobile,其它字段和子表...[expand2] 如果指定expand关联对象名称,就查询主表所有字段,适用不需要延时加载场景,比如查询客户资料时候一起查询客户customer完整信息。...小结 本文介绍了列表查询API所有的参数,包括智能查询、全文检索以及字段选择等。crudapi系统通过配置方式实现了对象查询和分页。

    1.6K11

    springboot集成了哪些框架_redis java客户端

    objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY...objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY...Use a negative value to * indicate an unlimited number of idle connections. */ private int maxIdle =...,也可以删除全部, 删除缓存操作默认在方法执行后,通过beforeInvocation设置 所有的注解操作都会涉及CacheManger, 在上下文只有一个CacheManger时会默认使用,否则需要在注解中指明...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.2K10

    Jackson,最牛掰 Java JSON 解析器

    setAge(int age) { this.age = age; } } 程序输出结果如下所示: { "name" : "沉默王二", "age" : 18 } 不是所有字段都支持序列化和反序列化...mapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_DEFAULT); 04、处理日期格式 对于日期类型字段,比如说 java.util.Date...在将 Java 对象序列化为 JSON 时,可能有些字段需要过滤,不显示在 JSON 中,Jackson 有一种比较简单实现方式。...再来看一下自定义反序列化类,继承 StdDeserializer,同时重写 deserialize() 方法,利用 JsonGenerator 读取 JSON,示例如下: public class CustomDeserializer...读取到一个树形结构中,然后通过 JsonNode get 方法将对应字段读取出来,然后生成新 Java 对象,并返回。

    1.8K20

    Jackson反序列化不可变类

    Jackson默认反序列化策略需要无参构造器,并提供字段setter函数。如下ImmutableUser类属性都被final修饰,只有全参构造器,没有setter方法,它实例一经创建就不可变。...需注意,@JsonPropertyvalue必须填写,且最好与Json串中字段名一致。否则将导致下面的异常。...com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type com.learn.more.entiry.ImmutableUser2...: ..., annotations: ... has no property name (and is not Injectable): can not use as property-based Creator...我们反序列化第三方不可变类时,可以使用该机制:创建ImmutableUserMixin类,具有与ImmutableUser相似的构造器参数,使用 @JsonProperty声明了参数对应json字段

    6410
    领券