项目遇到将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);
}