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<String, Object> jsonStr2Map(String jsonStr) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
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<Map<String, Object>> jsonStr2List(String jsonStr) throws Exception {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
JSONArray ja = new JSONArray(jsonStr);
for (int j = 0; j < ja.length(); j++) {
String jm = ja.getString(j);
if (jm.indexOf("{") == 0) {
Map<String, Object> 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<String, Object> map = new HashMap<String, Object>();
map.put("key1", "val1");
map.put("key2", "val2");
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
Map<String, Object> map2 = new HashMap<String, Object>();
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<String, Object> jsonStr2Map = jsonStr2Map(map2JsonStr);
System.out.println("jsonStr2Map:" + jsonStr2Map);
// 2.jsonStr和List之间的转换
List<Object> list_ = new ArrayList<Object>();
list_.add(map);
String list_Str = list_.toString();
System.out.println("list_Str:" + list_Str);
List<Map<String, Object>> 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}]}]
小贴士:作者正在持续更新中,请稍后。