在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+"參數(shù):"+str+"\n";
}
return "姓名:"+name+"\n"+str1;
}
請求內(nèi)容:
{
"name": "weiwei",
"imgs": [
"abc",
"123",
"/*-"
]
}
如果我使用
String[] imgs = (String[]) map.get("imgs")
去獲取傳過來的數(shù)組就會報錯:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to [Ljava.lang.String;
說ArrayList不能轉(zhuǎn)換成String[];
我JSON中的內(nèi)容傳的是一個數(shù)組呀,為什么變成ArrayList了?
2 回答

喵喔喔
TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個贊
@RequsetBody會讀取request的body數(shù)據(jù),之后會調(diào)用MappingJackson2HttpMessageConverter解析數(shù)據(jù),會使用到ObjectMapper,之后this.objectMapper.readValue(inputMessage.getBody(), javaType);javaType是
AbstractJackson2HttpMessageConverter中g(shù)etJavaType優(yōu)選出來可以解析context的類型.
添加回答
舉報
0/150
提交
取消