问题描述:
使用formData格式从前端同时传json字符串和文件到后端时,后端只能接收String和MultipartFile。
1、如果用对象接收则会报415错误
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
2、如果用String接收,没有正确处理映射到对象的话,会出现对象取值空指针异常的问题
思路分析:
先采用String接收数据,然后使用JSONObject.parseObject()方法,进行json数据的解析,实体类解析对象可根据Json数据的对象类型进行定义,可嵌套多层对象关系进行解析,注意相应的json数据对象层级结构即可。
解决方案:
@ApiOperation(value = "岗位新增,并向ERP发送同步消息")
@ApiImplicitParam(name = "sessionid",dataType = "String",paramType = "header")
@PostMapping("/save")
public FusenJSONResult savePost(@RequestParam("jsonData") String post,@RequestParam("file") MultipartFile file,HttpServletRequest request) throws Exception {
log.info("待保存岗位对象{}", post.toString());
if (postManagerService.savePost(JSONObject.parseObject(post,Post.class),file,request)) {
return FusenJSONResult.success();
} else {
return FusenJSONResult.fail();
}
}