Map 某 value 为 对象数组,转为 ArrayList 对象集合

Map 某 value 为 对象数组,转为 ArrayList 对象集合

使用 Map 接收前端数据,一些 value 参数为对象数组,调用 map.get() 方法获取数值会报错,因此需要将 map 转成别的类型。

1、问题场景

使用 Map 接收数据,可以看出 key 为 "addressList" 的 value 是一个对象数组,怎么获取 value 值呢?

{
    "name":"Lin",
    "addressList": [
        {
            "address":"海珠区",
            "userId": "1"
        },
                {
            "address":"鼎湖区",
            "userId": "2"
        }
    ]
}

2、 转换步骤

分为四个步骤

  1. Map 转 JSON 字符串
  2. JSON 字符串转 JSONObject
  3. JSONObject.get() 方法获取参数值并转为 JSONArray
  4. 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
    }
]
自我控制是最强者的本能-萧伯纳
原文地址:https://www.cnblogs.com/CF1314/p/14708415.html