Json转化工具类

package com.rest.ful.utils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;



/**
 * Json工具类
 * @author  zlzhaoe
 * @version [版本号, 2017年5月8日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class JsonUtils
{

    private static SerializeConfig mapping = new SerializeConfig();

    private static String dateFormat;
    static
    {
        dateFormat = "yyyy-MM-dd HH:mm:ss";
        mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
    }

    /**
     * 
     * <把任意对象转换为json字符串 >
     * 
     * @param obj 任意对象
     * @return json字符串
     */
    public static String object2json(Object obj)
    {
        if (obj == null)
        {
            return "{}";
        }
        return JSON.toJSONString(obj, mapping);
    }

    /**
     * 
     * <把bean对象转换为json字符串>
     * 
     * @param bean bean对象
     * @return json字符串
     */
    public static String bean2json(Object bean)
    {
        return object2json(bean);
    }

    /**
     * 
     * <把list对象转换为json字符串>
     * 
     * @param list list对象
     * @return json字符串
     */
    public static String list2json(List<?> list)
    {
        return object2json(list);
    }

    /**
     * 
     * <把数组对象转换为json字符串>
     * 
     * @param array 数组对象
     * @return json字符串
     */
    public static String array2json(Object[] array)
    {
        return object2json(array);
    }

    /**
     * 
     * <把数组对象转换为json字符串>
     * 
     * @param map map对象
     * @return json字符串
     */
    public static String map2json(Map<?, ?> map)
    {
        return object2json(map);
    }

    /**
     * 
     * <把set对象转换为json字符串>
     * 
     * @param set set对象
     * @return json字符串
     */
    public static String set2json(Set<?> set)
    {
        return object2json(set);
    }

    /**
     * 
     * <把String对象转换为json字符串>
     * 
     * @param s String对象
     * @return json字符串
     */
    public static String string2json(String s)
    {
        if (null == s)
        {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++)
        {
            char ch = s.charAt(i);
            switch (ch)
            {
                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;
                case '/':
                    sb.append("\\/");
                    break;
                default:
                    if (ch >= '\u0000' && ch <= '\u001F')
                    {
                        String ss = Integer.toHexString(ch);
                        sb.append("\\u");
                        for (int k = 0; k < 4 - ss.length(); k++)
                        {
                            sb.append('0');
                        }
                        sb.append(ss.toUpperCase());
                    }
                    else
                    {
                        sb.append(ch);
                    }
            }
        }
        return sb.toString();
    }

    public static List<Map<String, Object>> parseJSON2List(String jsonStr)
    {
        JSONArray jsonArr = JSONArray.parseArray(jsonStr);
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Iterator<Object> it = jsonArr.iterator();
        while (it.hasNext())
        {
            JSONObject json2 = JSONObject.parseObject(JSON.toJSONString(it.next(), mapping));
            list.add(parseJSON2Map(json2.toString()));
        }
        return list;
    }

    public static Map<String, Object> parseJSON2Map(String jsonStr)
    {
        Map<String, Object> map = new HashMap<String, Object>();
        // 最外层解析
        JSONObject json = JSONObject.parseObject(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<Object> it = ((JSONArray)v).iterator();
                while (it.hasNext())
                {
                    JSONObject json2 = JSONObject.parseObject(JSON.toJSONString(it.next(), mapping));
                    list.add(parseJSON2Map(json2.toString()));
                }
                map.put(k.toString(), list);
            }
            else
            {
                map.put(k.toString(), v);
            }
        }
        return map;
    }

    public static List<Map<String, Object>> getListByUrl(String url)
    {
        try
        {
            // 通过HTTP获取JSON数据
            InputStream in = new URL(url).openStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null)
            {
                sb.append(line);
            }
            return parseJSON2List(sb.toString());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] a)
    {
        List<Object> list = new ArrayList<Object>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(new Date());
        list.add(15);
        String aa = JSON.toJSONString(list, mapping);
        System.out.println(aa);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值