“JSON parse error: Unexpected character (‘1‘ (code 49))的解决方式

745 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

现在是:2022年12月7日19:16:48

大家好,我是雄雄。

刚刚在调用接口的时候,出现了个错误:(很是奇怪,简单分析应该是参数的问题,所以就开始检查后端代码)

{
	"code": 400,
	"success": false,
	"data": null,
	"msg": "JSON parse error: Unexpected character ('1' (code 49)): was expecting a colon to separate field name and value; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('1' (code 49)): was expecting a colon to separate field name and value\n at [Source: (PushbackInputStream); line: 1, column: 67]"
}

然后我后端代码是这样的,接收的是一个json对象的参数,然后开始进行处理:

	@PostMapping("/updateProjectBeginTime")
	@ApiOperationSupport(order = 3)
	@ApiOperation(value = "threePlant-第一个动作的更新", notes = "传入userId,programmeId,projectId,time")
	public R updateProjectBeginTime(@ApiParam(value = "训练方案业务对象", required = true) @RequestBody  TrainingVO trainingVO) {
		//第一个动作的开始时间
		trainingVO.setBeginTime(trainingVO.getTime());
		//第一个动作:训练中
		trainingVO.setStatus(1);
		//将第一个动作放在redis的缓存中
		bladeRedis.set("training:updateTrainingStatusAndTime:" +
			trainingVO.getUserId() + ":" +
			trainingVO.getProgrammeId(), trainingVO.getProjectId());
		//调用更新的借口
		return trainingSchemeUrlService.updateTrainingProgrammeAndProjectStatusAndTime(trainingVO);
	}

下面是我的传递的参数,封装成了个对象,直接传递的:

{
    "projectId":4336,
    "userId":1520262094935859201,
    "time"1651327242254:,
    "programmeId":400
}

乍一看都对,但是调用的时候就是调不通,还报了个上面的错,于是我就在网上搜啊搜啊,长篇大论一堆,都没有解决。

然后我就仔细分析,看报错应该是json的问题,但是json能有啥问题呢。检查传参,终于发现问题了。 是我的time参数传参的时候格式不对.........,大家可以仔细的检查一下,第一个参数后面多了个冒号....因为在使用apipost时,是有搜狗输入法,鼠标光标会乱动,导致的这个问题。

下面是解决方式: 错误的格式: "time"1651327242254:,

正确的格式: "time":1651327242254,

改过来就可以啦。

注意事项:大家以后在调用的接口传参的时候一定要仔细,尤其是遇到传递json对象的这种,报错了还不好找,一般这个错误都是传递参数的问题,如果传递的对象比较复杂,可以先用json格式化工具格式化一下,然后在调用,避免这种小问题的出现。