SpringBoot后端实体通过@RequestBody接收传进来的json为Null的解决办法

楼主今天在开发后端接口的时候,遇到了一个伤脑筋的问题,看下图:

楼主用@RequestBody注解通过实体去接收前端的json值,前端json值和实体TerminalPosition一一对应的,结果发现怎么传terminalPosition这个对象都为空,很奇怪;

楼主做实验发现把@RequestBody TerminalPosition terminalPosition 改成 @RequestBody String json看看,

结果发现json果然是我传入json的字符串,于是楼主知道,不是传json过程中的错误,而是接受实体的过程中注入出现了问题;

结果定位到了TerminalPosition这个实体类中,如下图:

发现这个类使用的是@Getter和@Setter注解,省略掉了我们常用的eclipse生成的getter和setter方法,这样更加的方便;

但是接收参数为空,最终请教了同事前辈找到了问题的所在:

是因为eclipse缺少lombok.jar包和没有安装lombok的环境,因为使用@Getter和@Setter注解,并且使用@RequestBody来接收前端json字符串的话是需要这个lombok的环境;

网上很多文章对于lombok的安装讲的不是很细节,楼主用自己的语言将lombok的安装重头细节的讲一遍:

1.从网上下载lombok的jar包,这里我推荐的是lombok1.16.20.jar这个版本的:
链接:http://mvnrepository.com/artifact/org.projectlombok/lombok/1.16.20

打开链接可以看到如下图:(点击红色箭头即可下载)

 

2.下载完毕后打开下载的目录;我这里是D盘的根目录:

 3.打开cmd命令窗口:输入以下指令

需要注意到:后面跟的路径是自己下载lombok的jar包的路径,每个人可能都不同,按自己的实际路径来

 4.输入命令之后会弹出一个对话框如下图:

红色箭头说明:因为这个对话框没有定位到我的eclipse安装目录,那么就需要点击这个红色箭头所指的按钮,选到我们的eclipse安装目录即可;(一般都会自动获取到我们的eclipse安装目录)

5.点击上图的Install/Update,然后点击Quit Installer 即可;

提示:这里是通过对话框安装,手动安装的话自己百度,很简单!

6.找到我们的ecllipse安装目录:发现多了一个lombok.jar包

7.于是打开eclipse.ini文件查看:多了这一行代码

有了6,7点的情况,就证明我们的lombok环境已经装好了,eclipse可以识别lombok了

 

8.eclipse可以识别lombok,不是意味着你现在什么都不要做了,还需要在工程中引入lombok.jar包即可(maven工程为例):

                 <dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.20</version>
		</dependency>

大家需要注意的一点是:

我工程中引入的lombok的版本号和装环境的时候的lombok的版本号是一样的,一定要注意版本号要相同,不然也没有效果;

9.上面步骤都做完以后,需要clean一下项目,然后重启eclipse即可

10现在大家可以重新试试了,传json值应该可以接受到了!

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
首先,需要确定@RequestBody是用于绑定HTTP请求的HTTP请求主体(body)到方法参数或方法返回值上的注解。当使用@RequestBody注解时,SpringBoot会自动将处理程序方法参数绑定到HTTP请求主体中的JSON对象上。 如果@RequestBody的请求主体JSONnull,则有可能是请求的Content-Type与数据类型不匹配。例如,请求的Content-Type为application/json,但是请求体的格式不是JSON,或者请求体中的JSON格式存在问题,导致SpringBoot无法将其转换为对象。 解决这个问题需要按照以下步骤进行: 1. 确认请求主体是否为null,这可以通过在方法中打印日志或使用调试器进行调试来实现。 2. 确认请求头中的Content-Type是否与请求主体的数据格式相匹配。 3. 确认请求体中的JSON格式是否正确,可以使用JSON 校验工具确认。 4. 如果以上步骤均无法解决问题,则可以考虑使用自定义JSON反序列化器。 在自定义反序列化器中,可以通过添加注解@JsonDeserialize(using = CustomDeserializer.class)来指定自定义反序列化器。这样,在接收JSON请求主体时,SpringBoot会使用自定义反序列化器将JSON数据转换为Java对象。如果仍然无法解决问题,可以查看SpringBoot的日志文件,查找相关错误信息进行解决。 总之,当SpringBoot的@RequestBody接收JSONnull时,需要仔细检查请求格式是否正确并考虑使用自定义反序列化器解决问题。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗兰随风小欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值