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 }
原文地址:https://www.cnblogs.com/qlong8807/p/2938818.html