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);//转JSONObjectJSONObject jsonObject = JSONObject.parseObject(json);//转JSONArrayJSONArray 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}]