Failed to convert value of type ‘java.lang.String‘ to required type ‘java.util.List‘;

Failed to convert value of type ‘java.lang.String’ to required type ‘java.util.List’; nested exception is java.lang.IllegalStateException: Cannot convert value of type ‘java.lang.String’ to required type ‘com.lanxi.hm.model.DrugParam’: no matching editors or conversion strategy found

today at 14:17:30   2022-12-08 14:17:30.837, [http-nio-7065-exec-2], ERROR, com.lanxi.hm.advice.DetailedControllerAdvice, 39, [detailedExceptionHandler] url:http://hm/hm/medicineBox/setAlarm. 
today at 14:17:30   org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'java.util.List'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.lanxi.hm.model.DrugParam': no matching editors or conversion strategy found
today at 14:17:30	at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:129)
today at 14:17:30	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
today at 14:17:30	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
today at 14:17:30	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
today at 14:17:30	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
today at 14:17:30	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
today at 14:17:30	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
today at 14:17:30	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
today at 14:17:30	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
today at 14:17:30	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
today at 14:17:30	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
today at 14:17:30	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
today at 14:17:30	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
today at 14:17:30	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
today at 14:17:30	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
...
...

我现在是写接口,对接第三方接口,第三方接口文档如下
在这里插入图片描述
此时,我写的接口如下:
在这里插入图片描述
在这里插入图片描述
看起来并没有什么问题,但是却报上文展示的错误

无法将类型“java.lang.String”的值转换为所需类型“java.util.List”;
嵌套异常为java.lang.IllegalStateException:
无法将“java.lang.String”类型的值转换为所需类型“com.lanxi.hm.model.DrugParam”:
找不到匹配的编辑器或转换策略

既然它传参传进来的是String,那我为什么非要把他转换成List<DrugsParam>
于是,我将接口参数类型直接就写成了String,修改后的接口如下:

@ApiOperation(value = "编辑闹钟接口")
@PostMapping("/setAlarm")
public Rs<String> setAlarm(
	@ApiParam(value = "token,通过‘获取token’接口获取") @RequestParam(value = "token", required = true) String token,
    @ApiParam(value = "用户ID") @RequestParam(value = "userId", required = true) String userId,
    @ApiParam(value = "设备编码") @RequestParam(value = "deviceSn", required = true) String deviceSn,
    @ApiParam(value = "闹钟ID") @RequestParam(value = "alarmId", required = true) String alarmId,
    @ApiParam(value = "闹钟时间,例08:05") @RequestParam(value = "alarmTime", required = true) String alarmTime,
    @ApiParam(value = "闹钟状态,1有效,2无效") @RequestParam(value = "status", required = true) String status,
    @ApiParam(value = "药品信息(数组),例如:[{ \"drug_name\":\"drug 1\", \"drug_amount\":\"1\" }, {\"drug_name\":\"drug 2\",\"drug_amount\":\"2\"}]") @RequestParam(value = "drugs", required = false) String drugs) {
    return Rs.success(medicineBoxService.setAlarm(token, userId, deviceSn, alarmId, alarmTime, status, drugs));
    }

关键的地方在这里
在这里插入图片描述
然后,居然报了空指针
在这里插入图片描述
代码在这里
在这里插入图片描述
接口在这里
在这里插入图片描述
细想,确实是会报空指针,于是一顿操作猛如虎,修改!加个判断不就可以了么~

在这里插入图片描述
ok,解决了
在这里插入图片描述
但是当我传参的时候
在这里插入图片描述
又一次报错~哦,我傻了,数组怎么转换成Json呢,直接传字符串不就好了,马大哈吗我是。。。
在这里插入图片描述
修改后的代码
在这里插入图片描述
ok彻底解决了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值