Java List或Map对象和json字符串数据的相互转化
2014-03-10 15:47
881 查看
Java代码JsonKit类
将java对象list或者map转json数据不需要第三方包,直接使用就可以了,如果你传入的数据不确定是map类型还是list类型,那么自己处理一下就可以了(判断下类型,传入参数改为object)。
如果是json数据转成java对象list或map,则需要一个第三方包org.json.jar,用这个包的好处是只需要导入这一个包就可以了,不需要其它支持的包。
下载地址 http://download.csdn.net/detail/syaringan356/7017917
package cn.okek.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * 实用工具包 * @author 周文鹏 * @date 2014-1-21 */ public class JsonKit { /** * 将list转为json * @param lists * @param sb * @return */ public static StringBuilder listToJson(List<?> lists, StringBuilder sb) { if (sb == null) sb = new StringBuilder(); sb.append("["); for (int i = 0; i < lists.size(); i++) { Object o = lists.get(i); if (o instanceof Map<?, ?>) { Map<?, ?> map = (Map<?, ?>) o; mapToJson(map, sb); } else if (o instanceof List<?>) { List<?> l = (List<?>) o; listToJson(l, sb); } else { sb.append("\"" + o + "\""); } if (i != lists.size() - 1) sb.append(","); } sb.append("]"); return sb; } /** * 将map转为json * @param map * @param sb * @return */ public static StringBuilder mapToJson(Map<?, ?> map, StringBuilder sb) { if (sb == null) sb = new StringBuilder(); sb.append("{"); Iterator<?> iter = map.entrySet().iterator(); while (iter.hasNext()) { Entry<?, ?> entry = (Entry<?, ?>) iter.next(); String key = entry.getKey() != null ? entry.getKey().toString() : ""; sb.append("\"" + stringToJson(key) + "\":"); Object o = entry.getValue(); if (o instanceof List<?>) { List<?> l = (List<?>) o; listToJson(l, sb); } else if (o instanceof Map<?, ?>) { Map<?, ?> m = (Map<?, ?>) o; mapToJson(m, sb); } else { String val = entry.getValue() != null ? entry.getValue().toString() : ""; sb.append("\"" + stringToJson(val) + "\""); } if (iter.hasNext()) sb.append(","); } sb.append("}"); return sb; } /** * 将字符串转为json数据 * @param str 数据字符串 * @return json字符串 */ private static String stringToJson(String str) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); switch (c) { case '\"': sb.append("\\\""); break; case '\\': sb.append("\\\\"); break; case '/': sb.append("\\/"); break; case '\b': sb.append("\\b"); break; case '\f': sb.append("\\f"); break; case '\n': sb.append("\\n"); break; case '\r': sb.append("\\r"); break; case '\t': sb.append("\\t"); break; default: sb.append(c); } } return sb.toString(); } /** * JsonArray转List * @param jsonArr * @return * @throws JSONException */ public static List<Object> jsonToList(JSONArray jsonArr) throws JSONException { List<Object> jsonToMapList = new ArrayList<Object>(); for (int i = 0; i < jsonArr.length(); i++) { Object object = jsonArr.get(i); if (object instanceof JSONArray) { jsonToMapList.add(jsonToList((JSONArray) object)); } else if (object instanceof JSONObject) { jsonToMapList.add(jsonToMap((JSONObject) object)); } else { jsonToMapList.add(object); } } return jsonToMapList; } /** * JsonObject转Map * @param jsonObj * @return * @throws JSONException */ public static Map<String, Object> jsonToMap(JSONObject jsonObj) throws JSONException { Map<String, Object> jsonMap = new TreeMap<String, Object>(); Iterator<?> jsonKeys = jsonObj.keys(); while (jsonKeys.hasNext()) { String jsonKey = (String) jsonKeys.next(); Object jsonValObj = jsonObj.get(jsonKey); if (jsonValObj instanceof JSONArray) { jsonMap.put(jsonKey, jsonToList((JSONArray) jsonValObj)); } else if (jsonValObj instanceof JSONObject) { jsonMap.put(jsonKey, jsonToMap((JSONObject) jsonValObj)); } else { jsonMap.put(jsonKey, jsonValObj); } } return jsonMap; } }
将java对象list或者map转json数据不需要第三方包,直接使用就可以了,如果你传入的数据不确定是map类型还是list类型,那么自己处理一下就可以了(判断下类型,传入参数改为object)。
如果是json数据转成java对象list或map,则需要一个第三方包org.json.jar,用这个包的好处是只需要导入这一个包就可以了,不需要其它支持的包。
下载地址 http://download.csdn.net/detail/syaringan356/7017917
相关文章推荐
- java方式的将java对象以及list或者map转化为json数据,json转换为object或者map
- java方式的将java对象以及list或者map转化为json数据
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- java方式的将java对象以及list或者map转化为json数据
- java方式的将java对象以及list或者map转化为json数据 .
- 转载:java方式的将java对象以及list或者map转化为json数据 .
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
- java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
- 【第15篇】通过FastJson把字符串转换成JSON和Map和List对象处理json数据
- java将list对象转换为json字符串数据显示为空的信息
- Android中将List<Map<String, Object>>类型数据与字符串的相互转化
- JSON的String字符串与Java的List列表对象的相互转换
- JSON的String字符串与Java的List列表对象的相互转换
- JAVA解析JSON数据转化为Map对象
- java中将jsonObject字符串转化为Map对象
- [Android]JSON数据传输出错——JSONObject将对象数据(Map,List)当成字符串处理
- Java 对象,数组 与 JSON 字符串 相互转化
- fastjson 第三方jar和java各种数据对象相互转化
- json:java对象与json字符串互转、java的list和map各自与json字符串的互转