Object型转list,jsonObject型转list方法,亲测可用

最近工作过程中,遇到一个场景,后端使用Object类型来接收前端传来的json串。但是做处理时需要将object类型的数据转为List类型。多次转换不成功,网上内容乱糟糟,在一番自己的研究后,有一个亲测可用的方法来实现Object类型数据转list。

首先,将Object类型转为jsonObject类型,这里的paramJson是Object类型的

JSONObject json = (JSONObject) JSON.toJSON(paramJson);

然后通过翻看JSONObject类的源码我看到了这么一个方法

public Object get(Object key) {
        Object val = this.map.get(key);
        if (val == null && (key instanceof Number || key instanceof Character || key instanceof Boolean || key instanceof UUID)) {
            val = this.map.get(key.toString());
        }

        return val;
    }
通过KEY值将对象的value取出,以Object类型返回,这个方法让我看到了希望。接下来我便尝试通过getkey来取出的value,并对value使用强制转换的形式来转成list
List<Map> mapList = (List<Map>)json.get("updateList");

运行了一下,没问题,成功了。下面总结下关键的两行转换代码

Object paramJson;
//转换依靠下列两行即可
JSONObject json = (JSONObject) JSON.toJSON(paramJson);
        List<Map> mapList = (List<Map>)json.get("updateList");

用个完整例子补充下:

get的内容是返回的键

public static void main(String[] args){
        String url = "http://xxxxxxxx:xxxx/xxx/xx/xx/xxxxxx";
        String zjhm = "12345998888";
        String ksxm = "xxxx";
        String param = "{'zjhm':'" + zjhm + "'}";
        String result = getAPIResult(url, param);
        JSONObject jsonObject = JSONObject.parseObject(result);
        List<Map> mapList = (List<Map>)jsonObject.get("data");
            String mapLists = (String) jsonObject.get("result");
        String message = (String) jsonObject.get("message");
        System.out.append(result);
        System.out.println("----------------------" + mapList);
        System.out.println(mapLists);
        System.out.println(message);
    }

这是string类型的result:

{"result":"1","message":"查询成功!","data":[{"zsbh":"xxxxxxxxxxxx","xm":"xxx","ksdm":"cnepm","ksmc":"考试成绩合格证明","pcmc":"2020年第一批","ksnd":"2020","kspc":"01"},{"zsbh":"xxxxxxxxxxx","xm":"xxx","ksdm":"cnepm","ksmc":"资格考试成绩合格证明","pcmc":"2022年第一批","ksnd":"2022","kspc":"01"}]}

这是List<Map> 类型的mapList:

[{"ksdm":"cnm","xm":"XXX","zsbh":"555555","kspc":"01","ksmc":"考试成绩合格证明","ksnd":"2020","cc":"2020年第一批"},{"ksdm":"cnepm","xm":"嘻嘻嘻","zsbh":"55555555","kspc":"01","ksmc":"资格考试成绩合格证明","ksnd":"2022","pcmc":"2022年第一批"}]

这是result和message:

1
查询成功!

通过上述一个请求外部接口并处理返回值的例子,可以看到更具体的用法。

工作之余,匆匆记录,表述有问题欢迎指正。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值