java中各种对象转换为JSON

来源:互联网 发布:网络屏蔽怎么破解 编辑:程序博客网 时间:2024/06/08 01:55

http://blog.csdn.net/wanli_smile/article/details/7000224

  1. import java.beans.IntrospectionException;  
  2.   
  3. import java.beans.Introspector;  
  4.   
  5. import java.beans.PropertyDescriptor;  
  6.   
  7. import java.math.BigDecimal;  
  8. import java.math.BigInteger;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11. import java.util.Set;  
  12. import org.apache.commons.logging.Log;  
  13. import org.apache.commons.logging.LogFactory;  
  14. public class JsonUtil {  
  15. private static Log log = LogFactory.getLog(JsonUtil.class);  
  16. public static String object2json(Object obj) {  
  17.              StringBuilder json = new StringBuilder();  
  18.              if (obj == null) {  
  19.                json.append("\"\"");  
  20.              } else if (obj instanceof String || obj instanceof Integer || obj instanceof Float  
  21.                  || obj instanceof Boolean || obj instanceof Short || obj instanceof Double  
  22.                  || obj instanceof Long || obj instanceof BigDecimal || obj instanceof BigInteger  
  23.                  || obj instanceof Byte) {  
  24.                json.append("\"").append(string2json(obj.toString())).append("\"");  
  25.              } else if (obj instanceof Object[]) {  
  26.                json.append(array2json((Object[]) obj));  
  27.              } else if (obj instanceof List) {  
  28.                json.append(list2json((List<?>) obj));  
  29.              } else if (obj instanceof Map) {  
  30.                json.append(map2json((Map<?, ?>) obj));  
  31.              } else if (obj instanceof Set) {  
  32.                json.append(set2json((Set<?>) obj));  
  33.              } else {  
  34.                json.append(bean2json(obj));  
  35.              }  
  36.              return json.toString();  
  37.   }  
  38. public static String bean2json(Object bean) {  
  39.              StringBuilder json = new StringBuilder();  
  40.              json.append("{");  
  41.              PropertyDescriptor[] props = null;  
  42.              try {  
  43.                props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();  
  44.              } catch (IntrospectionException e) {}  
  45.              if (props != null) {  
  46.                for (int i = 0; i < props.length; i++) {  
  47.                  try {  
  48.                    String name = object2json(props[i].getName());  
  49.                    String value = object2json(props[i].getReadMethod().invoke(bean));  
  50.                    json.append(name);  
  51.                    json.append(":");  
  52.                    json.append(value);  
  53.                    json.append(",");  
  54.                  } catch (Exception e) {}  
  55.                }  
  56.                json.setCharAt(json.length() - 1'}');  
  57.              } else {  
  58.                json.append("}");  
  59.              }  
  60.              return json.toString();  
  61.   }  
  62. public static String list2json(List<?> list) {  
  63.              StringBuilder json = new StringBuilder();  
  64.              json.append("[");  
  65.              if (list != null && list.size() > 0) {  
  66.                for (Object obj : list) {  
  67.                  json.append(object2json(obj));  
  68.                  json.append(",");  
  69.                }  
  70.                json.setCharAt(json.length() - 1']');  
  71.              } else {  
  72.                json.append("]");  
  73.              }  
  74.              return json.toString();  
  75.   }  
  76. public static String array2json(Object[] array) {  
  77.              StringBuilder json = new StringBuilder();  
  78.              json.append("[");  
  79.              if (array != null && array.length > 0) {  
  80.                for (Object obj : array) {  
  81.                  json.append(object2json(obj));  
  82.                  json.append(",");  
  83.                }  
  84.                json.setCharAt(json.length() - 1']');  
  85.              } else {  
  86.                json.append("]");  
  87.              }  
  88.              return json.toString();  
  89.   }  
  90. public static String map2json(Map<?, ?> map) {  
  91.              StringBuilder json = new StringBuilder();  
  92.              json.append("{");  
  93.              if (map != null && map.size() > 0) {  
  94.                for (Object key : map.keySet()) {  
  95.                  json.append(object2json(key));  
  96.                  json.append(":");  
  97.                  json.append(object2json(map.get(key)));  
  98.                  json.append(",");  
  99.                }  
  100.                json.setCharAt(json.length() - 1'}');  
  101.              } else {  
  102.                json.append("}");  
  103.              }  
  104.              return json.toString();  
  105.   }  
  106. public static String set2json(Set<?> set) {  
  107.              StringBuilder json = new StringBuilder();  
  108.              json.append("[");  
  109.              if (set != null && set.size() > 0) {  
  110.                for (Object obj : set) {  
  111.                  json.append(object2json(obj));  
  112.                  json.append(",");  
  113.                }  
  114.                json.setCharAt(json.length() - 1']');  
  115.              } else {  
  116.                json.append("]");  
  117.              }  
  118.              return json.toString();  
  119.   }  
  120. public static String string2json(String s) {  
  121.              if (s == null)  
  122.                return "";  
  123.              StringBuilder sb = new StringBuilder();  
  124.              for (int i = 0; i < s.length(); i++) {  
  125.                char ch = s.charAt(i);  
  126.                switch (ch) {  
  127.                case '"':  
  128.                  sb.append("\\\"");  
  129.                  break;  
  130.                case '\\':  
  131.                  sb.append("\\\\");  
  132.                  break;  
  133.                case '\b':  
  134.                  sb.append("\\b");  
  135.                  break;  
  136.                case '\f':  
  137.                  sb.append("\\f");  
  138.                  break;  
  139.                case '\n':  
  140.                  sb.append("\\n");  
  141.                  break;  
  142.                case '\r':  
  143.                  sb.append("\\r");  
  144.                  break;  
  145.                case '\t':  
  146.                  sb.append("\\t");  
  147.                  break;  
  148.                case '/':  
  149.                  sb.append("\\/");  
  150.                  break;  
  151.                default:  
  152.                  if (ch >= '\u0000' && ch <= '\u001F') {  
  153.                    String ss = Integer.toHexString(ch);  
  154.                    sb.append("\\u");  
  155.                    for (int k = 0; k < 4 - ss.length(); k++) {  
  156.                      sb.append('0');  
  157.                    }  
  158.                    sb.append(ss.toUpperCase());  
  159.                  } else {  
  160.                    sb.append(ch);  
  161.                  }  
  162.                }  
  163.              }  
  164.              return sb.toString();  
  165.   }  

0 0