将JSON转换成MAP的工具类

来源:互联网 发布:php平台是干什么用呢? 编辑:程序博客网 时间:2024/05/21 15:45

package com.xxxx.util;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class MapTools {     public static List<Map<String, Object>> parseJSON2List(String jsonStr){    JSONArray jsonArr = JSONArray.fromObject(jsonStr);    List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();    Iterator<JSONObject> it = jsonArr.iterator();    while(it.hasNext()){      JSONObject json2 = it.next();      list.add(parseJSON2Map(json2.toString()));    }    return list;  }       public static Map<String, Object> parseJSON2Map(String jsonStr){    Map<String, Object> map = new HashMap<String, Object>();    //最外层解析    JSONObject json = JSONObject.fromObject(jsonStr);    for(Object k : json.keySet()){      Object v = json.get(k);       //如果内层还是数组的话,继续解析      if(v instanceof JSONArray){        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();        Iterator<JSONObject> it = ((JSONArray)v).iterator();        while(it.hasNext()){          JSONObject json2 = it.next();          list.add(parseJSON2Map(json2.toString()));        }        map.put(k.toString(), list);      } else {        map.put(k.toString(), v);      }    }    return map;  }       public static List<Map<String, Object>> getListByUrl(String url){    try {      //通过HTTP获取JSON数据      InputStream in = new URL(url).openStream();      BufferedReader reader = new BufferedReader(new InputStreamReader(in));      StringBuilder sb = new StringBuilder();      String line;      while((line=reader.readLine())!=null){        sb.append(line);      }      return parseJSON2List(sb.toString());    } catch (Exception e) {      e.printStackTrace();    }    return null;  }       public static Map<String, Object> getMapByUrl(String url){    try {      //通过HTTP获取JSON数据      InputStream in = new URL(url).openStream();      BufferedReader reader = new BufferedReader(new InputStreamReader(in));      StringBuilder sb = new StringBuilder();      String line;      while((line=reader.readLine())!=null){        sb.append(line);      }      return parseJSON2Map(sb.toString());    } catch (Exception e) {      e.printStackTrace();    }    return null;  }      //test  public static void main(String[] args) {    String url = "http://...";    List<Map<String,Object>> list = getListByUrl(url);    System.out.println(list);  }}

原文地址:http://www.cnblogs.com/daijinming/p/3940835.html

0 0
原创粉丝点击