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”}
结论
试gson ==================
{“bType”:“testBtype”}
[外链图片转存中…(img-6eLwhp9o-1649480278983)]
结论
如果 java bean 的属性名称首字母小写 , 第二个字母大写 , 使用 jackson 序列化时候不遵循小驼峰规则