這裏提供一方法,能夠看成工具類,只要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());
}
}
}
}