SpringMVC中的Jackson反序列化映射问题

问题描述

controller:

    @PostMapping
    public Result<Object> addUser(@RequestBody User user) {
        boolean result = userService.save(user);
        return result ? Result.succeed(null) : Result.fail("添加失败");
    }

user:

@Data
@TableName("user_table")
public class User {
    /**
     * 编号 自增
     */
    @TableId(type = IdType.AUTO)
    private Integer uCode;

    /**
     * 名称
     */
    private String uName;

    /**
     * 密码
     */
    private String uPwd;

    /**
     * 类型 0:普通;1:管理员
     */
    private Boolean uType;

    /**
     * 备注
     */
    private String uMemo;
}

测试案例:
测试案例
出现问题:
出现问题
user 中的属性没有被赋值,而 json 中的字段名和 user 的属性名是一致的,说明在反序列化时字段名没有正确映射。

解决问题

默认情况下,Jackson 使用驼峰命名规则(Camel Case)来映射 JSON 字段到 Java 对象的属性。在驼峰命名规则下,JSON 字段名中的大写字母会被保留,不会转换为小写或添加下划线。

例如:uName对应u_name,而userName遵循驼峰命名规则,对应userName

如果字段名不遵守驼峰命名规则,那我们可以使用@JsonProperty注解指定映射字段与属性的映射关系。

    /**
     * 编号 自增
     */
    @TableId(type = IdType.AUTO)
    @JsonProperty("uCode")
    private Integer uCode;
    ...

建议

建议开发过程要遵循字段命名规则,Java 中使用驼峰命名,数据库表字段使用小写加下划线命名。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值