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 mapList = (List)json.get("updateList");

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

Object paramJson;
//转换依靠下列两行即可
JSONObject json = (JSONObject) JSON.toJSON(paramJson);
        List mapList = (List)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 mapList = (List)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 类型的mapList:

[{"ksdm":"cnepm","xm":"XXX","zsbh":"202055555500002","kspc":"01","ksmc":"护士考试成绩合格证明","ksnd":"2020","pcmc":"2020年第一批"},{"ksdm":"cnepm","xm":"嘻嘻嘻","zsbh":"2022555555555001","kspc":"01","ksmc":"护士执业资格考试成绩合格证明","ksnd":"2022","pcmc":"2022年第一批"}]

这是result和message:

1
查询成功!

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

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

你可能感兴趣的:(Java日常,json,java)