这里提供一方法,能够看成工具类,只要json字符串没有问题,嵌套几层均可以。java
import net.sf.json.JSONArray; import net.sf.json.JSONObject public class Json2Map { /** * 将json字符串转为Map结构 * 若是json复杂,结果多是map嵌套map * @param jsonStr 入参,json格式字符串 * @return 返回一个map */ public static Map<String, Object> json2Map(String jsonStr) { Map<String, Object> map = new HashMap<>(); if(jsonStr != null && !"".equals(jsonStr)){ //最外层解析 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(json2Map(json2.toString())); } map.put(k.toString(), list); } else { map.put(k.toString(), v); } } return map; }else{ return null; } } }
package
com.zkn.newlearn.json;
import
com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONArray;
import
com.alibaba.fastjson.JSONObject;
import
java.util.List;
import
java.util.Map;
/**
* Created by zkn on 2016/8/22.
*/
public
class
JsonToMapTest02 {
public
static
void
main(String[] args){
String strArr =
"[{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"},"
+
"{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}]"
;
//第一种方式
List<Map<String,String>> listObjectFir = (List<Map<String,String>>) JSONArray.parse(strArr);
System.out.println(
"利用JSONArray中的parse方法来解析json数组字符串"
);
for
(Map<String,String> mapList : listObjectFir){
for
(Map.Entry entry : mapList.entrySet()){
System.out.println( entry.getKey() +
" "
+entry.getValue());
}
}
//第二种方式
List<Map<String,String>> listObjectSec = JSONArray.parseObject(strArr,List.
class
);
System.out.println(
"利用JSONArray中的parseObject方法并指定返回类型来解析json数组字符串"
);
for
(Map<String,String> mapList : listObjectSec){
for
(Map.Entry entry : mapList.entrySet()){
System.out.println( entry.getKey() +
" "
+entry.getValue());
}
}
//第三种方式
JSONArray listObjectThir = JSONArray.parseArray(strArr);
System.out.println(
"利用JSONArray中的parseArray方法来解析json数组字符串"
);
for
(Object mapList : listObjectThir){
for
(Object entry : ((Map)mapList).entrySet()){
System.out.println(((Map.Entry)entry).getKey() +
" "
+((Map.Entry)entry).getValue());
}
}
//第四种方式
List listObjectFour = JSONArray.parseArray(strArr,Map.
class
);
System.out.println(
"利用JSONArray中的parseArray方法并指定返回类型来解析json数组字符串"
);
for
(Object mapList : listObjectFour){
for
(Object entry : ((Map)mapList).entrySet()){
System.out.println(((Map.Entry)entry).getKey() +
" "
+((Map.Entry)entry).getValue());
}
}
//第五种方式
JSONArray listObjectFifth = JSONObject.parseArray(strArr);
System.out.println(
"利用JSONObject中的parseArray方法来解析json数组字符串"
);
for
(Object mapList : listObjectFifth){
for
(Object entry : ((Map)mapList).entrySet()){
System.out.println(((Map.Entry)entry).getKey() +
" "
+((Map.Entry)entry).getValue());
}
}
//第六种方式
List listObjectSix = JSONObject.parseArray(strArr,Map.
class
);
System.out.println(
"利用JSONObject中的parseArray方法并指定返回类型来解析json数组字符串"
);
for
(Object mapList : listObjectSix){
for
(Object entry : ((Map)mapList).entrySet()){
System.out.println(((Map.Entry)entry).getKey() +
" "
+((Map.Entry)entry).getValue());
}
}
//第七种方式
JSONArray listObjectSeven = JSON.parseArray(strArr);
System.out.println(
"利用JSON中的parseArray方法来解析json数组字符串"
);
for
(Object mapList : listObjectSeven){
for
(Object entry : ((Map)mapList).entrySet()){
System.out.println(((Map.Entry)entry).getKey() +
" "
+((Map.Entry)entry).getValue());
}
}
//第八种方式
List listObjectEigh = JSONObject.parseArray(strArr,Map.
class
);
System.out.println(
"利用JSON中的parseArray方法并指定返回类型来解析json数组字符串"
);
for
(Object mapList : listObjectEigh){
for
(Object entry : ((Map)mapList).entrySet()){
System.out.println(((Map.Entry)entry).getKey() +
" "
+((Map.Entry)entry).getValue());
}
}
}
}