Map 某 value 為 對象數組,轉為 ArrayList 對象集合
使用 Map 接收前端數據,一些 value 參數為對象數組,調用 map.get() 方法獲取數值會報錯,因此需要將 map 轉成別的類型。
1、問題場景
使用 Map 接收數據,可以看出 key 為 "addressList" 的 value 是一個對象數組,怎么獲取 value 值呢?
{
"name":"Lin",
"addressList": [
{
"address":"海珠區",
"userId": "1"
},
{
"address":"鼎湖區",
"userId": "2"
}
]
}
2、 轉換步驟
分為四個步驟:
- Map 轉 JSON 字符串
- JSON 字符串轉 JSONObject
- JSONObject.get() 方法獲取參數值並轉為 JSONArray
- JSONArray 轉 ArrayList 對象集合
具體代碼如下:
public List<Address> test(@RequestBody Map<String, Object> map) {
//轉JSON字符串
String json = JSONObject.toJSONString(map);
//轉JSONObject
JSONObject jsonObject = JSONObject.parseObject(json);
//轉JSONArray
JSONArray jsonArray =JSONArray.parseArray(jsonObject.getString("addressList"));
//轉ArrayList對象集合
List<Address> addressList = jsonArray.toJavaList(Address.class);
return addressList;
}
返回結果如下:
[
{
"id": null,
"city": null,
"address": "海珠區",
"userId": 1
},
{
"id": null,
"city": null,
"address": "鼎湖區",
"userId": 2
}
]
