工具類之json處理
阿新 • • 發佈:2018-12-24
專案遇到將json陣列轉化為集合list或者map,使用的是阿里的fastjson包,主要方法主要體現在:
- json陣列轉化為list<Map<String,Object>>
public static List<Map<String, Object>> fromJsonArrayToList(JSONArray jsonArray){
List<Map<String, Object>> list = new ArrayList();
for (Object object : jsonArray) {
//轉化為json物件
JSONObject jsonObject = (JSONObject) object;
Map<String, Object> map = new HashMap();
//遍歷json物件
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
//如果json物件裡巢狀json陣列,
if(entry.getValue() instanceof JSONArray){
map .put((String)entry.getKey(), fromJsonArrayToList((JSONArray)entry.getValue()));
}else{
map.put((String)entry.getKey(), entry.getValue());
}
}
list.add(map);
}
return list;
}
- json字串轉化為map集合
public static Map<String, Object> fromJsonToMap(String jsonString){
Map<String , Object> jsonMap = JSONObject.parseObject(jsonString, Map.class);
Map<String, Object> resultMap = new HashMap();
for(Map.Entry<String, Object> e : jsonMap.entrySet()){
if(jsonMap.get(e.getKey()) instanceof JSONArray){
JSONArray jsonArray = (JSONArray)jsonMap.get(e.getKey());
List<Map<String, Object>> list = fromJsonArrayToList(jsonArray);
resultMap.put(e.getKey(), list);
}else{
resultMap.put(e.getKey() , jsonMap.get(e.getKey()) );
}
}
return resultMap;
}
測試:
public static void main(String[] args) {
JSONArray jsonArray=new JSONArray();
for (int i=0;i<10;i++){
JSONObject jsonObject=new JSONObject();
jsonObject.put(i+"",i);
jsonArray.add(jsonObject);
}
JSONObject jsonObject=new JSONObject();
jsonObject.put("a",jsonArray);
List<Map<String,Object>> list=fromJsonArrayToList(jsonArray);
String jsonString="{'a':'a','b':'b'}";
Map<String,Object> map=fromJsonToMap(jsonString);
}