软件开发定制定制项目debug|no String-argument constructor/factory method to deserialize from String val

软件开发定制定制前后端传递出现的异常:

{
  "timestamp": "2022-07-20T05:35:24.337+00:00",
  "status": 400,
  "error": "Bad Request",
  "message": "JSON parse error: Cannot construct instance of `com.example.wiki.domain.Content` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('313'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.example.wiki.domain.Content` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('313') at [Source: (PushbackInputStream); line: 2, column: 56] (through reference chain: com.example.wiki.req.DocSaveReq[\"content\"])",
  "path": "/doc/save"
}

软件开发定制定制读了下报错,软件开发定制定制大概意思是前端传到后端的字符串没法正常反序列化,问题出在哪里呢?是前端还是后端呢?400按照以往的经验,是前端的错误,一般来说就是前端发了莫名其妙的东西,后端没法解析,但是这次我觉得不是前端的问题,但是到底哪里出错了呢?我不知道,得看一下。

先检查一下前端的代码——查看一下传过去的参数有没有问题:

{"id":"204501532224393216","ebookId":"1","parent":"0","name":"1",  "sort":1,"viewCount":null,"voteCount":null,"content":"313"}

看了一下,没有问题,符合设计,那么问题就应该出在后端了。

如果问题出在后端,那么应该是涉及到springMVC相关的代码了,准备按照以下顺序进行检查:
--controller层
1. 映射地址是否正确
2. 传参的注释是否正确
3. 用于承接Jason字符串的自定义类是否定义正确
--service层
1.如果controller没出现问题,再往下检查

开始检查:

1. 由于是Jason字符串没法正常反序列化,可能是我的@映射地址写错了,也许是映射到其他controller了上面了,但是经由检查,发现并未写错,因此这个可能性排除。

2.传参的注释是否正确呢?不好说,不过检查了一下,发现没有问题(后来我试了一下,如果是注释错误,那么应该报500的错误,即服务器内部错误,而不是400)

3.DocSaveReq可能出问题了,Jason应该通过MVC得到一个DocSaveReq的对象,那么是不是我的DocSaveReq类定义出了问题呢?查看一下DocSaveReq类,果然:

  1. @NotNull(message = "{content}不能为空")
  2. private Content content;

我前端传过来的JSON中叫content的变量类型是一个string,而我在这里给定义成了Content,MVC肯定无法转换过去,因此修改此处如下

  1. @NotNull(message = "{content}不能为空")
  2. private String content;

---

编译,打包,重新进行接口测试:

{
  "success": true,
  "message": null,
  "content": null
}

bug解决!

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发