java 公用的解析json的方式,将json转换成集合的模式存放

来源:互联网 发布:云计算 大会 编辑:程序博客网 时间:2024/06/08 08:07

import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONObject;/** *   * @author ahnw_01 * */public class JsonParseUtil {/** * 公用的解析json的方式,将json转换成集合的模式存放,最外层是一个map, * 里面由map和list嵌套组成,集合内部的格式与json数据本身的格式相同 * @param jsonStr * @return * @throws Exception */public static Map<String, Object> parseJsonToCollect(String jsonStr) throws Exception{  Map<String, Object>data = new HashMap<String, Object>();  JSONObject root=new JSONObject(jsonStr);  Iterator<String> iterator = root.keys();String key = null;String value = null; JSONArray dataArray = null;while(iterator.hasNext()){key = iterator.next();try {dataArray = root.getJSONArray(key);if(dataArray != null){//如果这个字段是一个listList<Map<String,Object>> list = new ArrayList<Map<String,Object>>();for( int i = 0 ;i < dataArray.length(); i++ ){  list.add(parseJsonToCollect(dataArray.getString(i))); }data.put(key, list);  }else{value = root.getString(key);//将json键值对放入map中data.put(key, value);  }} catch (Exception e) {try {root.getJSONObject(key);data.put(key, parseJsonToCollect(root.getString(key)));} catch (Exception e1) {value = root.getString(key);//将json键值对放入map中data.put(key, value);   }   }  }return data;} }





}