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
}
]