本人在这里提供json的转换详细的工具类,如下代码
package com.util.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
/**
* json转换工具,支持多重嵌套
*
* 依赖包:commons-beanutils-1.8.3.jar commons-collections-3.1.jar
* commons-lang-2.6.jar commons-logging-1.1.1.jar
* ezmorph-1.0.3.jar json-lib-2.4-jdk15.jar
*
* @author lijx
*
*/
public class JsonUtil {
/**
* Map转json
* @param map
* @return
*/
@SuppressWarnings("unchecked")
public static String mapToJson(Map<String, Object> map){
StringBuffer sb = new StringBuffer();
sb.append("{");
int size = map.size();
if(size>0){
int j = map.entrySet().size();
for(Entry<String, Object> entry : map.entrySet()){
String key = entry.getKey();
Object value = entry.getValue();
sb.append("\"");
sb.append(key);
sb.append("\"");
sb.append(":");
if(value==null){
sb.append("\"\"");
}else{
String json = "";
if(value instanceof Map<?, ?>){
json = mapToJson((Map<String, Object>)value);
sb.append(json);
}else if(value instanceof List){
json = listMapToJson((List<Map<String, Object>>)value);
sb.append(json);
}else{
sb.append("\"");
sb.append(value.toString());
sb.append("\"");
}
}
j--;
if (j > 0) {
sb.append(",");
}
}
}
sb.append("}");
return sb.toString();
}
/**
* List<Map>转json
* @param list
* @return
*/
@SuppressWarnings("unchecked")
public static String listMapToJson(List<Map<String, Object>> listMap) {
StringBuffer sb = new StringBuffer();
int k = listMap.size();
sb.append("[");
for (Map<String, Object> map : listMap) {
sb.append("{");
int q = map.entrySet().size();
for (Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
q--;
sb.append("\"");
sb.append(key);
sb.append("\"");
sb.append(":");
if(value==null){
sb.append("\"\"");
}else{
String json = "";
if(value instanceof Map<?, ?>){
json = mapToJson((Map<String, Object>)value);
sb.append(json);
}else if(value instanceof List<?>){
json = listMapToJson((List<Map<String, Object>>)value);
sb.append(json);
}else{
sb.append("\"");
sb.append(value.toString());
sb.append("\"");
}
}
if (q > 0) {
sb.append(",");
}
}
k--;
sb.append("}");
if (k > 0) {
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
/**
* json字符串转Map
* @param json
* @return
*/
public static Map<String, Object> jsonToMap(String json){
Map<String, Object> map = new HashMap<String, Object>(16);
JSONObject jsonObj = JSONObject.fromObject(json);
for(Object key : jsonObj.keySet()){
Object value = jsonObj.get(key);
String keyStr = String.valueOf(key);
String json2 = String.valueOf(value);
if(value instanceof JSONObject){
map.put(keyStr, jsonToMap(json2));
}else if(value instanceof JSONArray){
map.put(keyStr, jsonToListMap(json2));
}else{
if("".equals(json2.trim())){
value = null;
}
map.put(keyStr, value);
}
}
return map;
}
/**
* json字符串转List<Map>
* @param json
* @return
*/
public static List<Map<String, Object>> jsonToListMap(String json){
List<Map<String, Object>> listMap = new ArrayList<Map<String,Object>>();
JSONArray jsonArr = JSONArray.fromObject(json);
Iterator<?> it = jsonArr.iterator();
while(it.hasNext()){
JSONObject json2 = (JSONObject)it.next();
listMap.add(jsonToMap(String.valueOf(json2)));
}
return listMap;
}
/**
* 需要导入:xom-1.1.jar
* @return
*/
public static String xmlStringToJson(String xmlString){
XMLSerializer xmlSerializer = new XMLSerializer();
String json = xmlSerializer.read(xmlString).toString(2);
return json;
}
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String,Object>(16);
Map<String, Object> m1 = new HashMap<String,Object>(16);
m1.put("photo", null);
m1.put("time", "2016-12");
Map<String, Object> m2 = new HashMap<String,Object>(16);
m2.put("pic", "pic.jpg");
m2.put("cs", "2222");
m1.put("other", m2);
map.put("name", "李哲");
map.put("age", null);
map.put("pics", m1);
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> m3 = new HashMap<String,Object>(16);
m3.put("data", "1");
m3.put("arr", "arr1");
Map<String, Object> m4 = new HashMap<String,Object>(16);
m4.put("data", "2");
m4.put("arr", "arr2");
list.add(m3);
list.add(m4);
map.put("listData", list);
String json = mapToJson(map);
System.out.println(json);
Map<String, Object> ms = jsonToMap(json);
System.out.println(ms);
System.out.println(map);
}
}