使用fastjson将JsonObject对象转为javaBean对象失败
发布日期:2021-10-12 17:51:35
浏览次数:2
分类:技术文章
本文共 3370 字,大约阅读时间需要 11 分钟。
1、前端vue中axios调用后台服务的代码:
onsubmit(){ this.axios.post("/api/leave/leaveApply",{ data:{ type:this.leaveForm.type, startTime:this.leaveForm.startTime, endTime:this.leaveForm.endTime, reason:this.leaveForm.reason, userId:'user1', pdId:'myProcess_1:2:15004', } }).then((res)=>{ alert(res.data); }).catch((res)=>{ alert("发起请假失败"); }) }
2、http请求参数如下:
3、springboot后台controller代码如下:
@RequestMapping("/leaveApply") @ResponseBody public String leaveApply(@RequestBody String leaveForm){ System.out.println("leaveForm:"+leaveForm); if(StringUtils.isEmpty(leaveForm)){ return "请假表单数据不允许为空"; } JSONObject jsonObject=JSON.parseObject(leaveForm); System.out.println("jsonObj:"+jsonObject); LeaveForm leaveFormObj=jsonObject.toJavaObject(LeaveForm.class); System.out.println("leaveFormObj:"+leaveFormObj); activittiService.startProcess(leaveFormObj.getPdId(),leaveFormObj.getUserId()); return "leaveApply"; }
4、访问controller,后台控制台打印如下信息:
leaveForm:{"data":{"type":"2","startTime":"","endTime":"","reason":"啊","userId":"user1","pdId":"myProcess_1:2:15004"}}jsonObj:{"data":{"reason":"啊","startTime":"","endTime":"","pdId":"myProcess_1:2:15004","type":"2","userId":"user1"}}leaveFormObj:LeaveForm{type=null, startTime=null, endTime=null, reason='null', userId='null', pdId='null'}2018-11-26 14:23:53.545 ERROR 5204 --- [nio-8088-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.activiti.engine.ActivitiIllegalArgumentException: processDefinitionKey and processDefinitionId are null] with root causeorg.activiti.engine.ActivitiIllegalArgumentException: processDefinitionKey and processDefinitionId are null at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:89) ~[activiti-engine-5.21.0.jar:5.21.0] at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:37) ~[activiti-engine-5.21.0.jar:5.21.0] at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) ~[activiti-engine-5.21.0.jar:5.21.0]
原因分析:
根据打印的信息可知,json字符串转jsonObject成功了,但jsonObject转javaBean失败了,重点查看jsonObject打印的信息:jsonObj:{"data":{"reason":"啊","startTime":"","endTime":"","pdId":"myProcess_1:2:15004","type":"2","userId":"user1"}}
正常的普通对象是用一对{}包裹的,而这里的格式明显不对,多了一层data{}包裹,由此可见是json字符串的格式有问题, 再返回前台查看传递的数据格式如下: 原来是这里用data包裹数据,在这里修改为下面这样: 再次访问controller,后台打印一下信息: leaveForm:{"type":"1","startTime":"2018-11-26T06:39:44.560Z","endTime":"2018-11-26T06:39:48.389Z","reason":"啊啊","userId":"user1","pdId":"myProcess_1:2:15004"}jsonObj:{"reason":"啊啊","startTime":"2018-11-26T06:39:44.560Z","endTime":"2018-11-26T06:39:48.389Z","pdId":"myProcess_1:2:15004","type":"1","userId":"user1"}leaveFormObj:LeaveForm{type=1, startTime=Mon Nov 26 14:39:44 CST 2018, endTime=Mon Nov 26 14:39:48 CST 2018, reason='啊啊', userId='user1', pdId='myProcess_1:2:15004'}
可以看出,jsonObject(jsonObj)已经没有data{}了,而且也成功转为javaBean(leaveFormObj),问题解决。
转载地址:https://blog.csdn.net/qq_39387856/article/details/84542541 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月23日 12时18分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python - 【用户、商品】【购买、浏览】数据处理
2019-04-27
python - sql + pandas 与 sqlite 结合
2019-04-27
python - 使用sql 分析(06 - 15)国内各省GDP
2019-04-27
python - 抓取汇率数据分析美元和欧元对RMB的变化曲线
2019-04-27
python 数据科学 - 【回归分析】 ☞ 线性回归(1)
2019-04-27
python 数据科学 - 【回归分析】 ☞ 线性回归(2)
2019-04-27
python - 批量更改文件名(过滤掉某个字符串)
2019-04-27
python 数据科学 - 【分类模型】 ☞ 决策树
2019-04-27
python - zip、numpy.c 函数
2019-04-27
python 数据科学 - 【分类模型】 ☞ 逻辑回归
2019-04-27
python 数据科学 - 【分类模型】 ☞ 稳健滴 SVM 支持向量机
2019-04-27
python - selenium 处理 alert
2019-04-27
Java - Set、List、Map
2019-04-27
Java - OnlyLady Spider(HttpClient 4.5 )
2019-04-27
Math - 高斯分布(正态分布)
2019-04-27
android学习笔记----简易音乐播放器原理
2019-04-27
Unity编辑器扩展——标签属性Attribute
2019-04-27
Unity中实现拖拽操作
2019-04-27