日期:2014-05-16  浏览次数:20373 次

Android封装Json工具类
package com.cz.app_user.utility;

import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

public final class JsonUtil
{

        /**
         * 把对象封装为JSON格式
         * 
         * @param o
         *            对象
         * @return JSON格式
         */
        @SuppressWarnings("unchecked")
        public static String toJson(final Object o)
        {
                if (o == null)
                {
                        return "null";
                }
                if (o instanceof String) //String
                {
                        return string2Json((String) o);
                }
                if (o instanceof Boolean) //Boolean
                {
                        return boolean2Json((Boolean) o);
                }
                if (o instanceof Number) //Number
                {
                        return number2Json((Number) o);
                }
                if (o instanceof Map) //Map
                {
                        return map2Json((Map<String, Object>) o);
                }
                if (o instanceof Collection) //List  Set
                {
                        return collection2Json((Collection) o);
                }
                if (o instanceof Object[]) //对象数组
                {
                        return array2Json((Object[]) o);
                }

                if (o instanceof int[])//基本类型数组
                {
                        return intArray2Json((int[]) o);
                }
                if (o instanceof boolean[])//基本类型数组
                {
                        return booleanArray2Json((boolean[]) o);
                }
                if (o instanceof long[])//基本类型数组
                {
                        return longArray2Json((long[]) o);
                }
                if (o instanceof float[])//基本类型数组
                {
                        return floatArray2Json((float[]) o);
                }
                if (o instanceof double[])//基本类型数组
                {
                        return doubleArray2Json((double[]) o);
                }
                if (o instanceof short[])//基本类型数组
                {
                        return shortArray2Json((short[]) o);
                }
                if (o instanceof byte[])//基本类型数组
                {
                        return byteArray2Json((byte[]) o);
                }
                if (o instanceof Object) //保底收尾对象
                {
                        return object2Json(o);
                }

                throw new RuntimeException("不支持的类型: " + o.getClass().getName());
        }

        /**
         * 将 String 对象编码为 JSON格式,只需处理好特殊字符
         * 
         * @param s
         *            String 对象
         * @return JSON格式
         */
        static String string2Json(final String s)
        {
                final StringBuilder sb = new StringBuilder(s.length() + 20);
                sb.append('\"');
                for (int i = 0; i < s.length(); i++)
                {
                        final char c = s.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");