异常-发送post请求传json数据,利用pojo类去接收,发现接收对象中字段全是null

本文介绍了一个关于JSON数据解析和映射的问题,分析了错误的原因,并提供了如何使用@RequestBody注解来解决该问题的方法。

最近,在写一个对接第三方的平台,双方数据交互采取json格式。在获取对方平台发起post请求的时候,发现数据解析与映射出现问题。

一、问题代码

@RestController
public class ConversationRobot {
    Logger logger = LoggerFactory.getLogger(ConversationRobot.class);@PostMapping(value = "/conversation/info")
    public String info(ConversationRequest req){
        logger.info("请求参数==>"+req.toString());
		//...
    }
}

二、运行结果

参数发现转换失败。

c.b.M.controller.ConversationRobot       : 请求参数==>ConversationRequest{sessionId='null', mobileNo='null', serviceNo='null', msgId='null', message='null'}

三、原因分析

请求方的ContentType是application/json ,而我使用的是pojo类去接收请求参数一般是对ContentType为application/x-www-form-urlencoded的。问题就出在这里。

常见的POST提交数据方式有

  • multipart/form-data:一般用于表单上传文件使用
  • application/x-www-form-urlencoded:一般用于提交表单数据
  • application/json:用于提交请求体是json格式数据,一般需要搭配@RequestBody进行解析、映射数据
  • text/xml:用于提交请求体是xml格式数据,一般需要搭配@RequestBody进行解析、映射数据

四、解决问题

​使用@RequestBody注解将请求体中的json参数映射到pojo类中。

@PostMapping(value = "/conversation/info")
public String info(@RequestBody ConversationRequest req){
    //....
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值