一.需求描述:
需要把json數組JSONArray對象進行遍歷、轉換爲List對象
二.需求分析:
1.首先我想到的是直接遍歷,通過JSONObject對象獲取指定k的v值
for (JSONObject a : jsonArray){
list.add(a.get("k"))
}
但是編譯異常,顯示遍歷對象必須是Object對象,我當時就懵逼了,json數組不是放json。。
2.查看源碼:
實現的是List<Object>方法,醉了.....
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());