JSONArray遍历

一.需求描述:

需要把json数组JSONArray对象进行遍历、转换为List对象

JSONArray遍历_第1张图片

二.需求分析:

1.首先我想到的是直接遍历,通过JSONObject对象获取指定k的v值

for (JSONObject a : jsonArray){

   list.add(a.get("k"))
}

但是编译异常,显示遍历对象必须是Object对象,我当时就懵逼了,json数组不是放json。。

2.查看源码:

JSONArray遍历_第2张图片

实现的是List方法,醉了.....

3.尝试强制转型JSONObject,报错:

for (JSONObject a : jsonArray){
   JSONObject x = (JSONObject) a
   list.add(x.get("k"))
}

三.解决方法:

Object需要先转JSON,然后才能转JSONObject:  

JSON.toJSON

for (JSONObject a : jsonArray){
   JSONObject x = (JSONObject) JSON.toJSON(a)
   list.add(x.get("k"))
}

或者:

List list = conditions.stream().map(obj -> {
            JSONObject jsonObj = (JSONObject) JSON.toJSON(obj);
            return jsonObj.getString("status");
        }).collect(Collectors.toList());

 

你可能感兴趣的:(JAVA基础知识)