关于Java Bean(实体类)前三个字母大写转 Json 遇到的问题

Jackson Json(springboot 默认使用)

在 SpringBoot 中默认使用的 Jackson Json 工具将对象序列化时,会在字段前两个字母全是大写的情况下,将前三个字母全转为小写(无论第三个字母是否大写都会)

可以改使用 Gson、fastJson 等工具序列化,将避免这个问题;


联想到可能的原因 Java Bean 中对字段的隐含的操作
  1. 因为 java bean 有专门的处理类,所以 bean 不只是规范。对于 bean,java 自身有一套处理类。其他框架大多也是使用 java 的处理类来使用 java bean;
  2. bean 内的属性全都是通过 get/set 方法来操作的;
  3. 其中 Introspector 类可以使用,getBeanInfo() 来获取 bean 信息,我们可以直接在 jdk8 中找到 java.beans.Introspector 类 decapitalize 方法(284行),这里可以看到,在读取 bean 信息时,会将前两个字母大写的,原样返回;
  4. 所以 bean 里面的字段要么前两个字母要么全小写,要么全大写。
    1. aB 返回:aB;(getAB)
    2. AB 返回:aB;(getAB)
    3. Ab 返回:ab;(getAb)
    4. ab 返回:ab;(getAb)
    5. 当然,可以不遵守规范,定义为(getaB)来进行区分,这就是另一会事了。
	public static String decapitalize(String name) {
        if (name == null || name.length() == 0) {
            return name;
        }
        if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
                        Character.isUpperCase(name.charAt(0))){
            return name;
        }
        char chars[] = name.toCharArray();
        chars[0] = Character.toLowerCase(chars[0]);
        return new String(chars);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值