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");