json转换工具

本人在这里提供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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值