【Java进阶营】Jackson自定义序列化注解(2)-Map扁平化到Bean中(&格式转换)

这篇博客介绍了如何使用Jackson自定义注解将Map对象扁平化到Bean中,并在过程中完成驼峰到蛇形键名的转换。文章通过实现代码、引入依赖和注解的使用方式进行详细阐述。
摘要由CSDN通过智能技术生成

上一篇:[Jackson自定义序列化注解(1)- Map的key驼峰蛇形的转换]中,实现了对Map的key的参数转换,但是总是存在一些骚操作:

image

如上图所示,这样对象Y就可以动态的选择序列化的字段。

本文主要实现Map对象(A,B)如何扁平化到Bean中?且扁平化的过程中,需要完成驼峰->蛇形的转换。
注:借鉴@JsonProperty的实现思路。

实现代码

引入依赖:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>31.0.1-jre</version>
</dependency>

自定义注解:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface DynamicCaseFormatFields {

    CaseFormat sourceFormat() default CaseFormat.LOWER_CAMEL;

    CaseFormat format() default CaseFormat.LOWER_CAMEL;

    boolean withNumber() default false;

}

public class DynamicCaseFormatFieldsBeanSerializerModifier extends BeanSerializerModifier {

    @Override
    public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc,
            List<BeanPropertyWriter> beanProperties) {
        return beanProperties.stream().map(bpw -> {
            DynamicCaseFormatFields
                    annotation = bpw.getAnnotation(DynamicCaseFormatFields.class);
         
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值