java中对象转换为json
网上找的一个类,感觉挺实用的,就贴在这里。
1 package cn.jasgroup.sanjiangaerolng.devicetest.tree; 2 3 import java.beans.IntrospectionException; 4 import java.beans.Introspector; 5 import java.beans.PropertyDescriptor; 6 import java.math.BigDecimal; 7 import java.math.BigInteger; 8 import java.util.List; 9 import java.util.Map; 10 import java.util.Set; 11 12 import org.apache.commons.logging.Log; 13 import org.apache.commons.logging.LogFactory; 14 15 public class JsonUtil { 16 private static Log log = LogFactory.getLog(JsonUtil.class); 17 public static String object2json(Object obj) { 18 StringBuilder json = new StringBuilder(); 19 if (obj == null) { 20 json.append("\"\""); 21 } 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) { 22 json.append("\"").append(string2json(obj.toString())).append("\""); 23 } else if (obj instanceof Object[]) { 24 json.append(array2json((Object[]) obj)); 25 } else if (obj instanceof List) { 26 json.append(list2json((List<?>) obj)); 27 } else if (obj instanceof Map) { 28 json.append(map2json((Map<?, ?>) obj)); 29 } else if (obj instanceof Set) { 30 json.append(set2json((Set<?>) obj)); 31 } else { 32 json.append(bean2json(obj)); 33 } 34 return json.toString(); 35 } 36 public static String bean2json(Object bean) { 37 StringBuilder json = new StringBuilder(); 38 json.append("{"); 39 PropertyDescriptor[] props = null; 40 try { 41 props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors(); 42 } catch (IntrospectionException e) { 43 } 44 if (props != null) { 45 for (int i = 0; i < props.length; i++) { 46 try { 47 String name = object2json(props[i].getName()); 48 String value = object2json(props[i].getReadMethod().invoke(bean)); 49 json.append(name); 50 json.append(":"); 51 json.append(value); 52 json.append(","); 53 } catch (Exception e) { 54 } 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 } 166 public static void main(String args[]) { 167 // List<UserTest> userList = new ArrayList<UserTest>(); 168 // userList.add(new UserTest("linbo","北京服装学院",25)); 169 // StringBuilder sb = new StringBuilder(); 170 // System.out.println(list2json(userList)); 171 } 172 }