任意格式转换为json

 

  
  
  
  
  1. import java.beans.IntrospectionException; 
  2. import java.beans.Introspector; 
  3. import java.beans.PropertyDescriptor; 
  4. import java.util.List; 
  5. import java.util.Map; 
  6. import java.util.Set; 
  7.  
  8. public class JsonUtils { 
  9.     public static String stringToJson(String s) { 
  10.         if (s == null) { 
  11.             return nullToJson(); 
  12.         } 
  13.         StringBuilder sb = new StringBuilder(); 
  14.         for (int i = 0; i < s.length(); i++) { 
  15.             char ch = s.charAt(i); 
  16.             switch (ch) { 
  17.             case '"'
  18.                 sb.append("\\\""); 
  19.                 break
  20.             case '\\'
  21.                 sb.append("\\\\"); 
  22.                 break
  23.             case '\b'
  24.                 sb.append("\\b"); 
  25.                 break
  26.             case '\f'
  27.                 sb.append("\\f"); 
  28.                 break
  29.             case '\n'
  30.                 sb.append("\\n"); 
  31.                 break
  32.             case '\r'
  33.                 sb.append("\\r"); 
  34.                 break
  35.             case '\t'
  36.                 sb.append("\\t"); 
  37.                 break
  38.             case '/'
  39.                 sb.append("\\/"); 
  40.                 break
  41.             default
  42.                 if (ch >= '\u0000' && ch <= '\u001F') { 
  43.                     String ss = Integer.toHexString(ch); 
  44.                     sb.append("\\u"); 
  45.                     for (int k = 0; k < 4 - ss.length(); k++) { 
  46.                         sb.append('0'); 
  47.                     } 
  48.                     sb.append(ss.toUpperCase()); 
  49.                 } else { 
  50.                     sb.append(ch); 
  51.                 } 
  52.             } 
  53.         } 
  54.         return sb.toString(); 
  55.     } 
  56.  
  57.     public static String nullToJson() { 
  58.         return ""
  59.     } 
  60.  
  61.     public static String objectToJson(Object obj) { 
  62.         StringBuilder json = new StringBuilder(); 
  63.         if (obj == null) { 
  64.             json.append("\"\""); 
  65.         } else if (obj instanceof Number) { 
  66.             json.append(numberToJson((Number) obj)); 
  67.         } else if (obj instanceof Boolean) { 
  68.             json.append(booleanToJson((Boolean) obj)); 
  69.         } else if (obj instanceof String) { 
  70.             json.append("\"").append(stringToJson(obj.toString())).append("\""); 
  71.         } else if (obj instanceof Object[]) { 
  72.             json.append(arrayToJson((Object[]) obj)); 
  73.         } else if (obj instanceof List) { 
  74.             json.append(listToJson((List<?>) obj)); 
  75.         } else if (obj instanceof Map) { 
  76.             json.append(mapToJson((Map<?, ?>) obj)); 
  77.         } else if (obj instanceof Set) { 
  78.             json.append(setToJson((Set<?>) obj)); 
  79.         } else { 
  80.             json.append(beanToJson(obj)); 
  81.         } 
  82.         return json.toString(); 
  83.     } 
  84.  
  85.     public static String numberToJson(Number number) { 
  86.         return number.toString(); 
  87.     } 
  88.  
  89.     public static String booleanToJson(Boolean bool) { 
  90.         return bool.toString(); 
  91.     } 
  92.  
  93.     /** *//** *//** *//** 
  94.      * @param bean 
  95.      *            bean对象 
  96.      * @return String 
  97.      */ 
  98.     public static String beanToJson(Object bean) { 
  99.         StringBuilder json = new StringBuilder(); 
  100.         json.append("{"); 
  101.         PropertyDescriptor[] props = null
  102.         try { 
  103.             props = Introspector.getBeanInfo(bean.getClass(), Object.class
  104.                     .getPropertyDescriptors(); 
  105.         } catch (IntrospectionException e) { 
  106.         } 
  107.         if (props != null) { 
  108.             for (int i = 0; i < props.length; i++) { 
  109.                 try { 
  110.                     String name = objectToJson(props[i].getName()); 
  111.                     String value = objectToJson(props[i].getReadMethod() 
  112.                             .invoke(bean)); 
  113.                     json.append(name); 
  114.                     json.append(":"); 
  115.                     json.append(value); 
  116.                     json.append(","); 
  117.                 } catch (Exception e) { 
  118.                 } 
  119.             } 
  120.             json.setCharAt(json.length() - 1'}'); 
  121.         } else { 
  122.             json.append("}"); 
  123.         } 
  124.         return json.toString(); 
  125.     } 
  126.  
  127.     /** *//** *//** *//** 
  128.      * @param list 
  129.      *            list对象 
  130.      * @return String 
  131.      */ 
  132.     public static String listToJson(List<?> list) { 
  133.         StringBuilder json = new StringBuilder(); 
  134.         json.append("["); 
  135.         if (list != null && list.size() > 0) { 
  136.             for (Object obj : list) { 
  137.                 json.append(objectToJson(obj)); 
  138.                 json.append(","); 
  139.             } 
  140.             json.setCharAt(json.length() - 1']'); 
  141.         } else { 
  142.             json.append("]"); 
  143.         } 
  144.         return json.toString(); 
  145.     } 
  146.  
  147.     /** *//** *//** *//** 
  148.      * @param array 
  149.      *            对象数组 
  150.      * @return String 
  151.      */ 
  152.     public static String arrayToJson(Object[] array) { 
  153.         StringBuilder json = new StringBuilder(); 
  154.         json.append("["); 
  155.         if (array != null && array.length > 0) { 
  156.             for (Object obj : array) { 
  157.                 json.append(objectToJson(obj)); 
  158.                 json.append(","); 
  159.             } 
  160.             json.setCharAt(json.length() - 1']'); 
  161.         } else { 
  162.             json.append("]"); 
  163.         } 
  164.         return json.toString(); 
  165.     } 
  166.  
  167.     /** *//** *//** *//** 
  168.      * @param map 
  169.      *            map对象 
  170.      * @return String 
  171.      */ 
  172.     public static String mapToJson(Map<?, ?> map) { 
  173.         StringBuilder json = new StringBuilder(); 
  174.         json.append("{"); 
  175.         if (map != null && map.size() > 0) { 
  176.             for (Object key : map.keySet()) { 
  177.                 json.append(objectToJson(key)); 
  178.                 json.append(":"); 
  179.                 json.append(objectToJson(map.get(key))); 
  180.                 json.append(","); 
  181.             } 
  182.             json.setCharAt(json.length() - 1'}'); 
  183.         } else { 
  184.             json.append("}"); 
  185.         } 
  186.         return json.toString(); 
  187.     } 
  188.  
  189.     /** *//** *//** *//** 
  190.      * @param set 
  191.      *            集合对象 
  192.      * @return String 
  193.      */ 
  194.     public static String setToJson(Set<?> set) { 
  195.         StringBuilder json = new StringBuilder(); 
  196.         json.append("["); 
  197.         if (set != null && set.size() > 0) { 
  198.             for (Object obj : set) { 
  199.                 json.append(objectToJson(obj)); 
  200.                 json.append(","); 
  201.             } 
  202.             json.setCharAt(json.length() - 1']'); 
  203.         } else { 
  204.             json.append("]"); 
  205.         } 
  206.         return json.toString(); 
  207.     } 
  208.  

 

你可能感兴趣的:(json,转换,职场,休闲,任意格式)