JsonUtils工具类

来源:互联网 发布:js 定义utf16 编辑:程序博客网 时间:2024/05/17 06:19
  1. import java.beans.IntrospectionException;  
  2. import java.beans.Introspector;  
  3. import java.beans.PropertyDescriptor;  
  4. import java.math.BigDecimal;  
  5. import java.math.BigInteger;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8. import java.util.Set;  
  9. public class JsonUtils  
  10. {  
  11.     /** Commons Logging instance. */  
  12.     private static org.apache.commons.logging.Log log =  
  13.         org.apache.commons.logging.LogFactory.getLog(JsonUtils.class);  
  14.     /** 
  15.      * @param obj 任意对象 
  16.      * @return String 
  17.      */  
  18.     public static String object2json(Object obj) {  
  19.         StringBuilder json = new StringBuilder();  
  20.         if (obj == null) {  
  21.             json.append("\"\"");  
  22.         } else if (obj instanceof String || obj instanceof Integer || obj instanceof Float   
  23.                 || obj instanceof Boolean || obj instanceof Short || obj instanceof Double   
  24.                 || obj instanceof Long || obj instanceof BigDecimal  
  25.                 || obj instanceof BigInteger || obj instanceof Byte) {  
  26.             json.append("\"").append(string2json(obj.toString())).append("\"");  
  27.         } else if (obj instanceof Object[]) {  
  28.             json.append(array2json((Object[]) obj));  
  29.         } else if (obj instanceof List) {  
  30.             json.append(list2json((List<?>) obj));  
  31.         } else if (obj instanceof Map) {  
  32.             json.append(map2json((Map<?, ?>) obj));  
  33.         } else if (obj instanceof Set) {  
  34.             json.append(set2json((Set<?>) obj));  
  35.         } else {  
  36.             json.append(bean2json(obj));  
  37.         }  
  38.         return json.toString();  
  39.     }  
  40.     /** 
  41.      * @param bean bean对象 
  42.      * @return String 
  43.      */  
  44.     public static String bean2json(Object bean) {  
  45.         StringBuilder json = new StringBuilder();  
  46.         json.append("{");  
  47.         PropertyDescriptor[] props = null;  
  48.         try {  
  49.             props = Introspector.getBeanInfo  
  50.                 (bean.getClass(), Object.class).getPropertyDescriptors();  
  51.         } catch (IntrospectionException e) {  
  52.             e.printStackTrace();  
  53.         }  
  54.         if (props != null) {  
  55.             for (int i = 0; i < props.length; i++) {  
  56.                 try {  
  57.                     String name = object2json(props[i].getName());  
  58.                     String value = object2json(props[i].getReadMethod().invoke(bean));  
  59.                     json.append(name);  
  60.                     json.append(":");  
  61.                     json.append(value);  
  62.                     json.append(",");  
  63.                 } catch (Exception e) {  
  64.                     e.printStackTrace();  
  65.                 }  
  66.             }  
  67.             json.setCharAt(json.length() - 1'}');  
  68.         } else {  
  69.             json.append("}");  
  70.         }  
  71.         return json.toString();  
  72.     }  
  73.     /** 
  74.      * @param list list对象 
  75.      * @return String 
  76.      */  
  77.     public static String list2json(List<?> list) {  
  78.         StringBuilder json = new StringBuilder();  
  79.         json.append("[");  
  80.         if (list != null && list.size() > 0) {  
  81.             for (Object obj : list) {  
  82.                 json.append(object2json(obj));  
  83.                 json.append(",");  
  84.             }  
  85.             json.setCharAt(json.length() - 1']');  
  86.         } else {  
  87.             json.append("]");  
  88.         }  
  89.         return json.toString();  
  90.     }  
  91.     /** 
  92.      * @param array 对象数组 
  93.      * @return String 
  94.      */  
  95.     public static String array2json(Object[] array) {  
  96.         StringBuilder json = new StringBuilder();  
  97.         json.append("[");  
  98.         if (array != null && array.length > 0) {  
  99.             for (Object obj : array) {  
  100.                 json.append(object2json(obj));  
  101.                 json.append(",");  
  102.             }  
  103.             json.setCharAt(json.length() - 1']');  
  104.         } else {  
  105.             json.append("]");  
  106.         }  
  107.         return json.toString();  
  108.     }  
  109.     /** 
  110.      * @param map map对象 
  111.      * @return String 
  112.      */  
  113.     public static String map2json(Map<?, ?> map) {  
  114.         StringBuilder json = new StringBuilder();  
  115.         json.append("{");  
  116.         if (map != null && map.size() > 0) {  
  117.             for (Object key : map.keySet()) {  
  118.                 json.append(object2json(key));  
  119.                 json.append(":");  
  120.                 json.append(object2json(map.get(key)));  
  121.                 json.append(",");  
  122.             }  
  123.             json.setCharAt(json.length() - 1'}');  
  124.         } else {  
  125.             json.append("}");  
  126.         }  
  127.         return json.toString();  
  128.     }  
  129.     /** 
  130.      * @param set 集合对象 
  131.      * @return String 
  132.      */  
  133.     public static String set2json(Set<?> set) {  
  134.         StringBuilder json = new StringBuilder();  
  135.         json.append("[");  
  136.         if (set != null && set.size() > 0) {  
  137.             for (Object obj : set) {  
  138.                 json.append(object2json(obj));  
  139.                 json.append(",");  
  140.             }  
  141.             json.setCharAt(json.length() - 1']');  
  142.         } else {  
  143.             json.append("]");  
  144.         }  
  145.         return json.toString();  
  146.     }  
  147.     /** 
  148.      * @param s 参数 
  149.      * @return String 
  150.      */  
  151.     public static String string2json(String s) {  
  152.         if (null == s){  
  153.             return "";  
  154.         }  
  155.         StringBuilder sb = new StringBuilder();  
  156.         for (int i = 0; i < s.length(); i++) {  
  157.             char ch = s.charAt(i);  
  158.             switch (ch) {  
  159.             case '"':  
  160.                 sb.append("\\\"");  
  161.                 break;  
  162.             case '\\':  
  163.                 sb.append("\\\\");  
  164.                 break;  
  165.             case '\b':  
  166.                 sb.append("\\b");  
  167.                 break;  
  168.             case '\f':  
  169.                 sb.append("\\f");  
  170.                 break;  
  171.             case '\n':  
  172.                 sb.append("\\n");  
  173.                 break;  
  174.             case '\r':  
  175.                 sb.append("\\r");  
  176.                 break;  
  177.             case '\t':  
  178.                 sb.append("\\t");  
  179.                 break;  
  180.             case '/':  
  181.                 sb.append("\\/");  
  182.                 break;  
  183.             default:  
  184.                 if (ch >= '\u0000' && ch <= '\u001F') {  
  185.                     String ss = Integer.toHexString(ch);  
  186.                     sb.append("\\u");  
  187.                     for (int k = 0; k < 4 - ss.length(); k++) {  
  188.                         sb.append('0');  
  189.                     }  
  190.                     sb.append(ss.toUpperCase());  
  191.                 } else {  
  192.                     sb.append(ch);  
  193.                 }  
  194.             }  
  195.         }  
  196.         return sb.toString();  
  197.     }  
  198. }  
原创粉丝点击