zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Python+fiddler(基于Cookie绕过验证码自动登录)
    Python+selenium(警告框处理)
    Python+selenium(多表单、多窗口切换)
    Python+selenium(定位一组元素)
    Python+selenium登录测试
    【转载】python format遇上花括号{}
    【转载】判断当前使用的编译器及操作系统
    动态库的创建,隐式加载和显式加载
    Google C++单元测试框架GoogleTest---AdvancedGuide(译文)
    三次样条插值 cubic spline interpolation
  • 原文地址:https://www.cnblogs.com/qlong8807/p/2938818.html
Copyright © 2011-2022 走看看