【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:本文面向的人群

二:错误场景引入

三:正确场景引入

四:问题解决

五:解决方法

1:public修饰

2:使用@JsonProperty注解


一:本文面向的人群

本文主要针对类中成员变量命名问题引起传送json字符串,但是变量为null的情况做出解释。

其中涉及到@Data注解(Spring自动生成的get和set方法)和@JsonProperty

二:错误场景引入

我用postman进行json对象传输给Student类,帮助Student类进行初始的过程中,发现Student并没有拿到json中的参数,于是我展开的研究

Student类我使用了@Data注解进行Object类方法的重写(其中包含get和set方法)

java 复制代码
@Data
public class Student {
    //@JsonProperty
    private Integer ID;
    private String name;
    private Integer age;
}

我们在反编译文件中可以看到

现在我们进行测试

java 复制代码
@RequestMapping("test")
    public String test(@RequestBody Student student){
        System.out.println();
        return "返回的参数为"+student;
    }

使用postman中json格式进行传参,帮助Student初始化,并返回student

可以看到我们进行JSON格式的传参下,Student并没有接收到ID这个参数1,说明就是,set方法没有拿到参数ID=1

三:正确场景引入

现在我们把Student类中的成员变量ID设置为小写的id,再来进行测试

对应的get和set方法

postman测试,可以看见,我们的Student类顺利的拿到了JSON中传过来的参数

四:问题解决

因为SpringBoot中生成的方法都是小写字段,这是重点。

Student类中ID成员变量是私有的,需要通过get和set方法进行获取和设置,我们通过@Data注解(SpringBoot中内置)来写get和set方法,这两个方法默认都是小写字段,所以跟我们传过来的JSON对象中的大写字段"ID"匹配不上,进而就赋值失败,为null。

五:解决方法

1:public修饰

我们将Student中的私有成员变量设置为public

2:使用@JsonProperty注解

Springboot返回前端的JSON会有个自动大小写转换,加上这个注解就限制了,就能获取到值了

java 复制代码
@Data
public class Student {
    @JsonProperty
    private Integer ID;
    private String name;
    private Integer age;
}
相关推荐
开开心心就好3 小时前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
David猪大卫3 小时前
【C++修炼】STL容器—模板进阶:非类型模板参数、模板特化、模板分离编译
c语言·开发语言·c++·经验分享·笔记·学习·面试
牛战士coding3 小时前
Java 对象写入 Redis 后类型变了?Jackson 多态序列化问题复盘
java·开发语言·redis
小白的码BUG之路3 小时前
Jenkins -- 配置jdk和maven
java·jenkins·maven
Chasing__Dreams3 小时前
python杂识--24--Nuitak打包exe
开发语言·python
xiaoqiMikko3 小时前
Redis 实战(基础篇):把一个老 RedisUtil 搬到 Spring Boot 4,一路踩出来的坑(真机实测)
java·spring boot·redis
yuniko-n4 小时前
【JUC】读写锁
java·开发语言
niucloud-admin4 小时前
NIUCLOUD LITE AI开发文档--基础开发规范
开发语言·php
小羊没烦恼!4 小时前
T-SQL查询高级—SQL Server索引中的碎片和填充因子
开发语言·前端·javascript·数据库·后端·python·web安全
yuzhiboyouye4 小时前
后端怎么评估工作量
java