<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-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ú)聲 閱讀(22073) 評(píng)論(7)  編輯  收藏

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲第一综合天堂另类专| 亚洲精品美女在线观看| 成人a毛片视频免费看| 免费v片在线观看品善网| 鲁死你资源站亚洲av| mm1313亚洲国产精品美女| 香港特级三A毛片免费观看| 亚洲国产精品第一区二区三区| av片在线观看永久免费| 国产精品亚洲精品日韩已满| 久久一本岛在免费线观看2020| 亚洲精品免费观看| 成人午夜免费福利视频| 国产成人精品亚洲日本在线 | 亚洲福利一区二区精品秒拍| 亚洲免费人成视频观看| 亚洲人成人网站18禁| gogo全球高清大胆亚洲| 久久久久久久99精品免费观看| 亚洲毛片一级带毛片基地| 久久久久国色AV免费观看性色| 国产亚洲情侣久久精品| 亚洲精品夜夜夜妓女网| 精品香蕉在线观看免费| 国产大陆亚洲精品国产| 久久精品亚洲综合一品| 18禁成年无码免费网站无遮挡| 色www免费视频| 亚洲酒色1314狠狠做| 日本视频免费在线| 久久免费精品一区二区| 在线aⅴ亚洲中文字幕| 亚洲日本一区二区一本一道| 日韩在线永久免费播放| 国产成人va亚洲电影| 久久久亚洲AV波多野结衣| 免费人成网站7777视频| 日韩在线播放全免费| 丰满妇女做a级毛片免费观看| 亚洲天堂电影在线观看| 国产AV无码专区亚洲AWWW|