java 对象(List/Map/Set)转json类

[java]  view plain copy
  1. package com.ciecc.utils;  
  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.ArrayList;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11. import java.util.Set;  
  12. import org.apache.commons.logging.Log;  
  13. import org.apache.commons.logging.LogFactory;  
  14.   
  15. import com.bict.test.UserTest;  
  16. public class JsonUtil {  
  17.     private static Log log = LogFactory.getLog(JsonUtil.class);  
  18.     public static String object2json(Object obj) {  
  19.         StringBuilder json = new StringBuilder();  
  20.         if (obj == null) {  
  21.             json.append("\"\"");  
  22.         } 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) {  
  23.             json.append("\"").append(string2json(obj.toString())).append("\"");  
  24.         } else if (obj instanceof Object[]) {  
  25.             json.append(array2json((Object[]) obj));  
  26.         } else if (obj instanceof List) {  
  27.             json.append(list2json((List<?>) obj));  
  28.         } else if (obj instanceof Map) {  
  29.             json.append(map2json((Map<?, ?>) obj));  
  30.         } else if (obj instanceof Set) {  
  31.             json.append(set2json((Set<?>) obj));  
  32.         } else {  
  33.             json.append(bean2json(obj));  
  34.         }  
  35.         return json.toString();  
  36.     }  
  37.     public static String bean2json(Object bean) {  
  38.         StringBuilder json = new StringBuilder();  
  39.         json.append("{");  
  40.         PropertyDescriptor[] props = null;  
  41.         try {  
  42.             props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();  
  43.         } catch (IntrospectionException e) {  
  44.         }  
  45.         if (props != null) {  
  46.             for (int i = 0; i < props.length; i++) {  
  47.                 try {  
  48.                     String name = object2json(props[i].getName());  
  49.                     String value = object2json(props[i].getReadMethod().invoke(bean));  
  50.                     json.append(name);  
  51.                     json.append(":");  
  52.                     json.append(value);  
  53.                     json.append(",");  
  54.                 } catch (Exception e) {  
  55.                 }  
  56.             }  
  57.             json.setCharAt(json.length() - 1'}');  
  58.         } else {  
  59.             json.append("}");  
  60.         }  
  61.         return json.toString();  
  62.     }  
  63.     public static String list2json(List<?> list) {  
  64.         StringBuilder json = new StringBuilder();  
  65.         json.append("[");  
  66.         if (list != null && list.size() > 0) {  
  67.             for (Object obj : list) {  
  68.                 json.append(object2json(obj));  
  69.                 json.append(",");  
  70.             }  
  71.             json.setCharAt(json.length() - 1']');  
  72.         } else {  
  73.             json.append("]");  
  74.         }  
  75.         return json.toString();  
  76.     }  
  77.     public static String array2json(Object[] array) {  
  78.         StringBuilder json = new StringBuilder();  
  79.         json.append("[");  
  80.         if (array != null && array.length > 0) {  
  81.             for (Object obj : array) {  
  82.                 json.append(object2json(obj));  
  83.                 json.append(",");  
  84.             }  
  85.             json.setCharAt(json.length() - 1']');  
  86.         } else {  
  87.             json.append("]");  
  88.         }  
  89.         return json.toString();  
  90.     }  
  91.     public static String map2json(Map<?, ?> map) {  
  92.         StringBuilder json = new StringBuilder();  
  93.         json.append("{");  
  94.         if (map != null && map.size() > 0) {  
  95.             for (Object key : map.keySet()) {  
  96.                 json.append(object2json(key));  
  97.                 json.append(":");  
  98.                 json.append(object2json(map.get(key)));  
  99.                 json.append(",");  
  100.             }  
  101.             json.setCharAt(json.length() - 1'}');  
  102.         } else {  
  103.             json.append("}");  
  104.         }  
  105.         return json.toString();  
  106.     }  
  107.     public static String set2json(Set<?> set) {  
  108.         StringBuilder json = new StringBuilder();  
  109.         json.append("[");  
  110.         if (set != null && set.size() > 0) {  
  111.             for (Object obj : set) {  
  112.                 json.append(object2json(obj));  
  113.                 json.append(",");  
  114.             }  
  115.             json.setCharAt(json.length() - 1']');  
  116.         } else {  
  117.             json.append("]");  
  118.         }  
  119.         return json.toString();  
  120.     }  
  121.     public static String string2json(String s) {  
  122.         if (s == null)  
  123.             return "";  
  124.         StringBuilder sb = new StringBuilder();  
  125.         for (int i = 0; i < s.length(); i++) {  
  126.             char ch = s.charAt(i);  
  127.             switch (ch) {  
  128.                 case '"' :  
  129.                     sb.append("\\\"");  
  130.                     break;  
  131.                 case '\\' :  
  132.                     sb.append("\\\\");  
  133.                     break;  
  134.                 case '\b' :  
  135.                     sb.append("\\b");  
  136.                     break;  
  137.                 case '\f' :  
  138.                     sb.append("\\f");  
  139.                     break;  
  140.                 case '\n' :  
  141.                     sb.append("\\n");  
  142.                     break;  
  143.                 case '\r' :  
  144.                     sb.append("\\r");  
  145.                     break;  
  146.                 case '\t' :  
  147.                     sb.append("\\t");  
  148.                     break;  
  149.                 case '/' :  
  150.                     sb.append("\\/");  
  151.                     break;  
  152.                 default :  
  153.                     if (ch >= '\u0000' && ch <= '\u001F') {  
  154.                         String ss = Integer.toHexString(ch);  
  155.                         sb.append("\\u");  
  156.                         for (int k = 0; k < 4 - ss.length(); k++) {  
  157.                             sb.append('0');  
  158.                         }  
  159.                         sb.append(ss.toUpperCase());  
  160.                     } else {  
  161.                         sb.append(ch);  
  162.                     }  
  163.             }  
  164.         }  
  165.         return sb.toString();  
  166.     }  
  167.     public static void main(String args[]) {  
  168.         List<UserTest> userList = new ArrayList<UserTest>();  
  169.         userList.add(new UserTest("linbo","北京服装学院",25));  
  170.         StringBuilder sb = new StringBuilder();  
  171.         System.out.println(list2json(userList));  
  172.     }  
  173. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值