zoukankan      html  css  js  c++  java
  • 构造Json对象串工具类

    import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    /***
     * 功能概述:构造Json对象工具类
     * 调用方式:JsonUtil.object2json(Object obj) //其中obj可以为String、数组、list、set、map
     * @author Administrator
     *
     */
    public class JsonUtil {
    public static 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();
      }
    public static 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();
      }
    public static String list2json(List<?> list) {
                 StringBuilder json = new StringBuilder();
                 json.append("[");
                 if (list != null && list.size() > 0) {
                   for (Object obj : list) {
                     json.append(object2json(obj));
                     json.append(",");
                   }
                   json.setCharAt(json.length() - 1, ']');
                 } else {
                   json.append("]");
                 }
                 return json.toString();
      }
    public static 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();
      }
    public static 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();
      }
    public static 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();
      }
    public static 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();
      }
    }
  • 相关阅读:
    BZOJ3578:GTY的人类基因组计划2(集合hash,STL)
    【BZOJ 1022】 [SHOI2008]小约翰的游戏John
    【BZOJ 1295】 [SCOI2009]最长距离
    【BZOJ 1103】 [POI2007]大都市meg
    【BZOJ 3172】 [Tjoi2013]单词
    【BZOJ 1067】 [SCOI2007]降雨量
    【BZOJ 1491】 [NOI2007]社交网络
    【BZOJ 1087】[SCOI2005]互不侵犯King
    【BZOJ 1009】 [HNOI2008]GT考试
    【BZOJ 1053】[HAOI2007]反素数ant
  • 原文地址:https://www.cnblogs.com/ciade/p/4867734.html
Copyright © 2011-2022 走看看