为了账号安全,请及时绑定邮箱和手机立即绑定

使用@RequestBody Map<String,Object>接受JSON,数组却变成了Arraylist,这是为什么?

使用@RequestBody Map<String,Object>接受JSON,数组却变成了Arraylist,这是为什么?

DIEA 2019-03-01 10:32:06
在Controller 中写了个方法: @PostMapping("/test1") public String test1(@RequestBody Map<String,Object> map){ //String[] imgs = (String[]) map.get("imgs"); //java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.String; ArrayList<String> imgs = (ArrayList<String>) map.get("imgs"); String name = (String) map.get("name"); String str1 = ""; for (String str: imgs) { System.err.println(str); str1 = str1+"参数:"+str+"\n"; } return "姓名:"+name+"\n"+str1; } 请求内容: { "name": "weiwei", "imgs": [ "abc", "123", "/*-" ] } 如果我使用 String[] imgs = (String[]) map.get("imgs") 去获取传过来的数组就会报错: java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.String; 说ArrayList不能转换成String[]; 我JSON中的内容传的是一个数组呀,为什么变成ArrayList了?
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

@RequsetBody会读取request的body数据,之后会调用MappingJackson2HttpMessageConverter解析数据,会使用到ObjectMapper,之后this.objectMapper.readValue(inputMessage.getBody(), javaType);javaType是
AbstractJackson2HttpMessageConverter中getJavaType优选出来可以解析context的类型.

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 951 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号