java对象序列化驼峰命名失效

json序列化驼峰命名失效

问题再现

springboot+vue 一个简单的博客系统 , 查询博客类型 , 实体类属性不能按照小驼峰序列化为 json 字符串

找问题

因为 springboot 默认序列化器使用的事 jackson , 所以我使用单元测试的方法去测试 , jackson序列化后的数据

jackson 使用 ObjectMapper 对象去序列化 java bean

测试

实体类

MBlogTypeEntity

@Data
@TableName("m_blog_type")
public class MBlogTypeEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 主键ID
	 */
	@ApiModelProperty(value = "主键ID")
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;
	/**
	 * 文章类型
	 */
	@ApiModelProperty(value = "文章类型")
	private String bType;
	/**
	 * 创建时间
	 */
	@ApiModelProperty(value = "创建时间")
	private Date createTime;
	/**
	 * 更改时间
	 */
	@ApiModelProperty(value = "更改时间")
	private Date updateTime;
	/**
	 * 乐观锁
	 */
	@ApiModelProperty(value = "乐观锁")
	private Integer version;
	/**
	 * 逻辑删除,0删除,1未删除
	 */
	@ApiModelProperty(value = "逻辑删除,0删除,1未删除")
	private Integer status;

}

说明:

为了具有对比性 , 我分别测试了 fastjson , gson , hutool的JSONUtil

测试类

import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;

public class TestJson {
    public static void main(String[] args) throws JsonProcessingException {
        MBlogTypeEntity mBlogTypeEntity = new MBlogTypeEntity();
        mBlogTypeEntity.setBType("testBtype");
        System.out.println("===============测试jackson ==========spriingboot默============");
        System.out.println(new ObjectMapper().writeValueAsString(mBlogTypeEntity));
        System.out.println("================测试fastjson=====================");
        System.out.println(JSON.toJSON(mBlogTypeEntity));
        System.out.println("=================测试hutool json==================");
        System.out.println(JSONUtil.toJsonStr(mBlogTypeEntity));
        System.out.println("=================测试gson ==================");
        System.out.println(new Gson().toJson(mBlogTypeEntity));
    }
}

输出

=======测试jackson spriingboot默
{“id”:null,“createTime”:null,“updateTime”:null,“version”:null,“status”:null,“btype”:“testBtype”}
测试fastjson
=
{“bType”:“testBtype”}
=测试hutool json

{“bType”:“testBtype”}
=================测试gson ==================
{“bType”:“testBtype”}

image-20220409125230437

结论

试gson ==================

{“bType”:“testBtype”}

[外链图片转存中…(img-6eLwhp9o-1649480278983)]

结论

如果 java bean 的属性名称首字母小写 , 第二个字母大写 , 使用 jackson 序列化时候不遵循小驼峰规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值