在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的类型.
添加回答
举报
0/150
提交
取消