2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【转载】Java 复杂json对象转Map

【转载】Java 复杂json对象转Map

时间:2019-07-17 12:29:56

相关推荐

【转载】Java 复杂json对象转Map

转自:/article/json2map.html

怎样将复杂的json对象转化成Map? 这就涉及了一点,是否存储最次级子节点的KEY和Value为Map的K_V, 本文中介绍两种搜集的发解决办法。都是存储最底层子节点作为K_V,可以根据自己的json形式进行特殊处理。 首先说下使用到的外部包com.alibaba.fastjson.JSONObject; Maven中增加依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency>

接下来直接上代码,可以封装成自己的工具类:

第一种方式(已封装成工具类)

private static Map JsonToMap(Stack<JSONObject> stObj, Map<String, Object> resultMap) throws Exception {if (stObj == null && stObj.pop() == null) {return null;}JSONObject json = stObj.pop();Set<String> strings = json.keySet();Iterator it = strings.iterator();while (it.hasNext()) {String key = (String) it.next();//得到value的值Object value = json.get(key);if (value instanceof JSONObject) {stObj.push((JSONObject) value);//递归遍历JsonToMap(stObj, resultMap);} else {resultMap.put(key, value);}}return resultMap; }

第二种方式

private static Map<String, Object> parseJSON2Map(String jsonStr) {Map<String, Object> map = new HashMap<String, Object>();// 最外层解析JSONObject json = JSONObject.fromObject(jsonStr);for (Object key : json.keySet()) {Object value = json.get(key);// 判断内层对象类型,如果还是数组的话,继续解析if (value instanceof JSONArray) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<JSONObject> it = ((JSONArray) value).iterator();while (it.hasNext()) {JSONObject json2 = it.next();list.add(parseJSON2Map(json2.toString()));}map.put(key.toString(), list);} else {map.put(key.toString(),value);}}return map; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。