解决SpringMVC报错Can not deserialize instance of java.util.ArrayList out of START_OBJECT token问题

8 篇文章 0 订阅
2 篇文章 0 订阅

SpringMVC请求报错Can not deserialize instance of java.util.ArrayList out of START_OBJECT token.

请求参数是json格式:

{
	"busiOrderNoList": ["ord1526358029166", "ord1526358060543"]
}

接收是POST 方法:


 @ApiOperation(tags = {Constants.API_RequiresNoPermission}, value = "查询支付结果", notes = "### 查询支付结果")
 @RequestMapping(value = "/findTradeInfoForBusiOrderId" ,method = RequestMethod.POST)
 public PayrollTradenoPay2CResult findTradeInfoForBusiOrderId((@RequestBody List<String> paramList)){
        return payrollTradenoService.findTradeInfoForBusiOrderId(paramList);
 }

这是明显不行的.如果要接收List<String>,应该更改前端传参.直接去掉大括号和参数名.如下

["ord1526358029166", "ord1526358060543"]

这样就能转换为List<String>了.


这有一个文章可以参考:SpringMVC获取前端传来的json数据的4种方式:

我把它整理了一下:
1、以RequestParam接收
前端传来的是json数据不多时:[id:id],可以直接用@RequestParam来获取值


@Autowired
private AccomodationService accomodationService;

@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestParam ("id") int id) {
    int res=accomodationService.deleteData(id);
    return "success";
}
 


2、以实体类方式接收
前端传来的是一个json对象时:{【id,name】},可以用实体类直接进行自动绑定

@Autowired
private AccomodationService accomodationService;

@RequestMapping(value = "/add")
@ResponseBody
public String addObj(@RequestBody Accomodation accomodation) {
       this.accomodationService.insert(accomodation);
       return "success";
}


3、以Map接收
前端传来的是一个json对象时:{【id,name】},可以用Map来获取

@Autowired
private AccomodationService accomodationService;

@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody Map<String, String> map) {
    if(map.containsKey("id"){
        Integer id = Integer.parseInt(map.get("id"));
    }
    if(map.containsKey("name"){
        String objname = map.get("name").toString();
    }
    // 操作 ...
    return "success";
}


4、以List接收
当前端传来这样一个json数组:[{id,name},{id,name},{id,name},...]时,用List<E>接收

@Autowired
private AccomodationService accomodationService;

@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody List<Accomodation> list) {
    for(Accomodation accomodation:list){
        System.out.println(accomodation.toString());
    }
    return "success";
}

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞翔的咩咩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值