将任意格式转换为JSON数据格式的工具类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值