隨筆-200  評(píng)論-148  文章-15  trackbacks-0
          package digu.pendant.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 PandantTools {
             
              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); 
                      //如果內(nèi)層還是數(shù)組的話,繼續(xù)解析
                      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 {
                      //通過(guò)HTTP獲取JSON數(shù)據(jù)
                      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 {
                      //通過(guò)HTTP獲取JSON數(shù)據(jù)
                      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);
              }
          }
          posted on 2013-01-30 19:48 無(wú)聲 閱讀(22077) 評(píng)論(7)  編輯  收藏

          評(píng)論:
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi) 2013-12-30 10:58 | danni
          請(qǐng)問(wèn)JSONArray.fromObject方法用的是哪個(gè)jar包???  回復(fù)  更多評(píng)論
            
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi)[未登錄](méi) 2014-08-10 12:35 | tester
          貌似有bug,轉(zhuǎn)map的那個(gè)  回復(fù)  更多評(píng)論
            
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi)[未登錄](méi) 2014-12-02 19:45 | 烏鴉
          map的那個(gè)方法中的if部分改成:
          if(v instanceof JSONObject){
          map.putAll(parseJSON2Map(v.toString()));
          } else {
          map.put(k.toString(), v);
          }  回復(fù)  更多評(píng)論
            
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi)[未登錄](méi) 2014-12-29 20:00 | Trace
          JSONObject.fromObject我的也沒(méi)有這個(gè)方法  回復(fù)  更多評(píng)論
            
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi) 2015-09-06 09:54 | 林秀東
          thank you ?。?用上了  回復(fù)  更多評(píng)論
            
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi) 2015-11-12 13:20 | 丹丹
          @烏鴉
          if(v instanceof JSONObject){
          map.put(k.toString(),parseJSON2Map(v.toString()));
          } else{
          map.put(k.toString(), v);
          }   回復(fù)  更多評(píng)論
            
          # re: 將JSON轉(zhuǎn)換成MAP的工具類(lèi) 2015-11-12 15:47 | 丹丹
          v instanceof JSONArray 這段代碼有問(wèn)題
          需要對(duì)
          List<String>做處理  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          道可道非常道,名可名非常名
          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(5)

          我參與的團(tuán)隊(duì)

          隨筆分類(lèi)(174)

          隨筆檔案(200)

          文章分類(lèi)(20)

          文章檔案(15)

          收藏夾

          開(kāi)源網(wǎng)站

          朋友博客

          最新隨筆

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 岐山县| 河池市| 五指山市| 萝北县| 沂南县| 临安市| 冕宁县| 商都县| 清远市| 黔南| 辽阳市| 桑植县| 镇原县| 体育| 锡林郭勒盟| 当雄县| 凤翔县| 嵩明县| 仁化县| 潜江市| 莱西市| 苏尼特右旗| 盐城市| 西丰县| 镇原县| 蒙阴县| 响水县| 彰化市| 崇阳县| 温宿县| 乡城县| 高尔夫| 江津市| 湖口县| 延安市| 曲麻莱县| 洛宁县| 江安县| 毕节市| 韩城市| 措美县|