Google Calendar插入事件时Spring @RequestBody JSON解析错误
解决Google Calendar事件JSON解析失败的问题
兄弟,我看你这问题明显是手动构造JSON的时候踩了格式规范的坑——毕竟Java客户端自动序列化对象会帮你处理好所有语法细节,但手动写JSON很容易漏东西。咱们来一步步排查:
首先看你给出的JSON里的明显错误
JSON结构完全没写完!
你贴的JSON里start对象的dateTime值只写了一半:"2018-04-07T17:00:00.000-...},既没补全时区(比如应该是-07:00或者+00:00),也没闭合双引号,更没把start对象和整个JSON的大括号写完,这Spring控制器肯定解析失败。顺带提个小细节:字符串内的引号转义规则
你写的Google"s其实在JSON里是没问题的(因为字符串用双引号包裹,内部单引号不需要转义),但如果字符串里要加双引号,就得写成Google\"s这种带反斜杠转义的格式才行。
给你一个符合规范的完整JSON示例
你可以照着这个调整自己的请求内容:
{ "summary": "Google I/O 2015", "location": "800 Howard St., San Francisco, CA 94103", "description": "A chance to hear more about Google's developer products.", "start": { "dateTime": "2018-04-07T17:00:00.000-07:00", "timeZone": "America/Los_Angeles" }, "end": { "dateTime": "2018-04-07T19:00:00.000-07:00", "timeZone": "America/Los_Angeles" } }
额外要检查的几个点
- 确认Postman/命令行里的请求头
Content-Type确实是application/json,别不小心选成form-data或者x-www-form-urlencoded了 - 检查Spring控制器对应的实体类字段是否和JSON的key完全匹配,比如嵌套的
start对象里的dateTime字段,实体类里的嵌套对象属性名得对应上 - 如果还是报错,把Spring控制台输出的具体解析错误信息贴出来,比如是哪个位置的语法错误,这样能更快定位问题
内容的提问来源于stack exchange,提问作者Romain Barbier
相关产品推荐
相关产品推荐

