常用的Java对象转化json串方法

来源:互联网 发布:福岛女教员便池知乎 编辑:程序博客网 时间:2024/05/16 00:47
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;/** *  * @author wl * 作用:将返回的对象封装成json的数据格式。 */public class JsonTools {/** * @author wl * @param Object obj * @return String * 将一个Object类型的数据变成json的数据格式,在这个方法中可以传入任何参数,在方法里面会根据传入的参数来判断调用具体的方法。 * 这里可以解析的数据类型有八种基本的数据类型对应的包装类型;String类型;集合类型(List,Map,Set);以及一个JavaBean对象。 */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();  }  }

0 0
原创粉丝点击