任意格式转换为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.  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值