@RequestBody boolean布尔类型映射不到大总结

一、boolean和Boolean的区别和使用场景


boolean是基本数据类型,Boolean是它的封装类,和其他类一样,有属性有方法。他们的关系其实是:Boolean 是boolean 的实例化对象类,和Integer对应int一样。
知道了他们的区别,那我们就可以知道该使用boolean还是Boolean了,第一个就是我们在使用容器内需要装布尔值的时候,这时候我们别无选择,只能使用Boolean类。其次,当我们需要用到toString()和valueOf()方法与String相互转换的场景应该使用Boolean类。比如,
Boolean.valueOf(target);来转换成Boolean对象。

 3.除此之外,在使用JPA(Java Persistence API)的过程中还是觉得使用boolean更有优势,因为我们只需要进行true/false的标记,就直接用boolean即可。

二、用boolean时接收不到前端参数


在使用前后端分离开发中,往往用Json传参是最高效的方式之一,但是我们可能遇到接收不到boolean类型(默认值是false)的参数。

这种情况其实是因为我们定义boolean参数的时候加了“is”,比如

private boolean isDeleted;
它的方法也是isDeleted(),RPC框架在反向解析的时候,会误判deleted才是属性名称,导致属性获取不到,进而产生抛出异常或者传参失败等情况。

PS:不要用is开头作为参数,我改成了**flag

三、解决办法


@JsonProperty是作用在实体类的属性上的,把属性的名称序列化另一个名称,属性名称和@JsonProperty("")里面的名称是映射关系。比如数据库字段是"is_deleted",实体类属性名称是"isDeleted",这种情况,只需加上@JsonProperty("isDeleted")就能获取到Json的传参了
综上,解决办法是:
@JsonProperty("isDeleted")
private boolean isDeleted;

    @JsonProperty(value = "is_deleted")
    public boolean isDeleted() {
        return deleted;
    }
    @JsonProperty(value = "is_deleted")
    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }

————————————————
版权声明:本文为CSDN博主「Coder_Cola」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Coder_Cola/article/details/124817961

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值