最近,在写一个对接第三方的平台,双方数据交互采取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){
//....
}
本文介绍了一个关于JSON数据解析和映射的问题,分析了错误的原因,并提供了如何使用@RequestBody注解来解决该问题的方法。
2360

被折叠的 条评论
为什么被折叠?



