java中常用的对象转json

来源:互联网 发布:网络机顶盒刷机工具 编辑:程序博客网 时间:2024/06/05 03:06

主要实现把java对常用的一些数据换成Json,以便前台的调用,具体的操作如下:
public class ConvertJson {

   
    publicstatic String object2json(Object obj) {
       StringBuilder json = new StringBuilder();
       if (obj == null) {
           json.append("\"\"");
       } else if (obj instanceof String || obj instanceof Integer
               || obj instanceof Float || obj instanceof Boolean
               || obj instanceof Short || obj instanceof Double
               || obj instanceof Long || obj instanceof BigDecimal
               || obj instanceof BigInteger || obj instanceof Byte) {
           json.append("\"").append(string2json(obj.toString())).append("\"");
       } else if (obj instanceof Object[]) {
           json.append(array2json((Object[]) obj));
       } else if (obj instanceof List) {
           json.append(list2json((List<?>)obj));
       } else if (obj instanceof Map) {
           json.append(map2json((Map<?, ?>)obj));
       } else if (obj instanceof Set) {
           json.append(set2json((Set<?>)obj));
       } else {
           json.append(bean2json(obj));
       }
       return json.toString();
    }
   
   
    publicstatic String bean2json(Object bean) {
       StringBuilder json = new StringBuilder();
       json.append("{");
       PropertyDescriptor[] props = null;
       try {
           props = Introspector.getBeanInfo(bean.getClass(),Object.class)
                   .getPropertyDescriptors();
       } catch (IntrospectionException e) {
       }
       if (props != null) {
           for (int i = 0; i < props.length; i++) {
               try {
                   String name = object2json(props[i].getName());
                   String value = object2json(props[i].getReadMethod().invoke(
                           bean));
                   json.append(name);
                   json.append(":");
                   json.append(value);
                   json.append(",");
               } catch (Exception e) {
               }
           }
           json.setCharAt(json.length() - 1, '}');
       } else {
           json.append("}");
       }
       return json.toString();
    }

   
    publicstatic String list2json(List<?> list){
       StringBuilder json = new StringBuilder();
       json.append("{obj:[");
       if (list != null && list.size()> 0) {
           for (Object obj : list) {
               json.append(object2json(obj));
               json.append(",");
           }
           json.setCharAt(json.length() - 1, ']');
           json.append("}");
       } else {
           json.append("]}");
       }
       return json.toString();
    }

   
    publicstatic String array2json(Object[] array) {
       StringBuilder json = new StringBuilder();
       json.append("[");
       if (array != null && array.length> 0) {
           for (Object obj : array) {
               json.append(object2json(obj));
               json.append(",");
           }
           json.setCharAt(json.length() - 1, ']');
       } else {
           json.append("]");
       }
       return json.toString();
    }

   
    publicstatic String map2json(Map<?, ?> map){
       StringBuilder json = new StringBuilder();
       json.append("{");
       if (map != null && map.size()> 0) {
           for (Object key : map.keySet()) {
               json.append(object2json(key));
               json.append(":");
               json.append(object2json(map.get(key)));
               json.append(",");
           }
           json.setCharAt(json.length() - 1, '}');
       } else {
           json.append("}");
       }
       return json.toString();
    }

   
    publicstatic String set2json(Set<?> set){
       StringBuilder json = new StringBuilder();
       json.append("[");
       if (set != null && set.size()> 0) {
           for (Object obj : set) {
               json.append(object2json(obj));
               json.append(",");
           }
           json.setCharAt(json.length() - 1, ']');
       } else {
           json.append("]");
       }
       return json.toString();
    }

   
    publicstatic String string2json(String s) {
       if (s == null)
           return "";
       StringBuilder sb = new StringBuilder();
       for (int i = 0; i < s.length(); i++) {
           char ch = s.charAt(i);
           switch (ch) {
           case '"':
               sb.append("\\\"");
               break;
           case '\\':
               sb.append("\\\\");
               break;
           case '\b':
               sb.append("\\b");
               break;
           case '\f':
               sb.append("\\f");
               break;
           case '\n':
               sb.append("\\n");
               break;
           case '\r':
               sb.append("\\r");
               break;
           case '\t':
               sb.append("\\t");
               break;
           case '/':
               sb.append("\\/");
               break;
           default:
               if (ch >= '\u0000'&& ch <= '\u001F'){
                   String ss = Integer.toHexString(ch);
                   sb.append("\\u");
                   for (int k = 0; k < 4 - ss.length(); k++) {
                       sb.append('0');
                   }
                   sb.append(ss.toUpperCase());
               } else {
                   sb.append(ch);
               }
           }
       }
       return sb.toString();
    }

}

0 0