java中json字符串转换成map/list

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;

public class JsonStr2MapOrList {

    /**
     * 以"{"开头的jsonStr转map,map里面有list,list里面还装有map
     */
    @SuppressWarnings("rawtypes")
    public static Map jsonStr2Map(String jsonStr) throws Exception {
        Map map = new HashMap();
        if (!jsonStr.isEmpty()) {
            JSONObject json = new JSONObject(jsonStr);
            Iterator i = json.keys();
            while (i.hasNext()) {
                String key = (String) i.next();
                String value = json.getString(key);
                if (value.indexOf("{") == 0) {
                    map.put(key.trim(), jsonStr2Map(value));
                } else if (value.indexOf("[") == 0) {
                    map.put(key.trim(), jsonStr2List(value));
                } else {
                    map.put(key.trim(), value.trim());
                }
            }
        }
        return map;
    }

    /**
     * 以"["开头的String转list,list里装有map
     */
    public static List> jsonStr2List(String jsonStr) throws Exception {
        List> list = new ArrayList>();
        JSONArray ja = new JSONArray(jsonStr);
        for (int j = 0; j < ja.length(); j++) {
            String jm = ja.getString(j);
            if (jm.indexOf("{") == 0) {
                Map m = jsonStr2Map(jm);
                list.add(m);
            }
        }
        return list;
    }

    /**
     * jsonStr和Map之间的转换, jsonStr和List之间的转换
     * 
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        // 1.jsonStr和Map之间的转换
        Map map = new HashMap();
        map.put("key1", "val1");
        map.put("key2", "val2");

        List> list = new ArrayList>();
        Map map1 = new HashMap();
        Map map2 = new HashMap();
        map1.put("key11", "val11");
        map1.put("key21", "val21");
        map2.put("key111", "val111");
        map2.put("key211", "val211");
        list.add(map1);
        list.add(map2);
        map.put("keyList", list);

        System.out.println("原始的map:" + map);
        String map2JsonStr = map.toString();
        System.out.println("map2JsonStr:" + map2JsonStr);
        Map jsonStr2Map = jsonStr2Map(map2JsonStr);
        System.out.println("jsonStr2Map:" + jsonStr2Map);

        // 2.jsonStr和List之间的转换
        List list_ = new ArrayList();
        list_.add(map);
        String list_Str = list_.toString();
        System.out.println("list_Str:" + list_Str);
        List> listM = jsonStr2List(list_Str);
        System.out.println("listM:" + listM);

    }

} 
  

 

输出结果:

原始的map:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
map2JsonStr:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
jsonStr2Map:{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}
list_Str:[{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}]
listM:[{key2=val2, key1=val1, keyList=[{key11=val11, key21=val21}, {key211=val211, key111=val111}]}]

 


小贴士:作者正在持续更新中,请稍后。

 

 

 

 

你可能感兴趣的:(Java+Java8,New,Features)