Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          package org.sjw.utils;

          import java.beans.IntrospectionException;
          import java.beans.Introspector;
          import java.beans.PropertyDescriptor;
          import java.util.List;
          import java.util.Map;
          import java.util.Set;

          public class JsonUtils {
              
          public static String stringToJson(String s) {
                  
          if (s == null{
                      
          return nullToJson();
                  }

                  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();
              }


              
          public static String nullToJson() {
                  
          return "";
              }


              
          public static String objectToJson(Object obj) {
                  StringBuilder json 
          = new StringBuilder();
                  
          if (obj == null{
                      json.append(
          "\"\"");
                  }
           else if (obj instanceof Number) {
                      json.append(numberToJson((Number) obj));
                  }
           else if (obj instanceof Boolean) {
                      json.append(booleanToJson((Boolean) obj));
                  }
           else if (obj instanceof String) {
                      json.append(
          "\"").append(stringToJson(obj.toString())).append("\"");
                  }
           else if (obj instanceof Object[]) {
                      json.append(arrayToJson((Object[]) obj));
                  }
           else if (obj instanceof List) {
                      json.append(listToJson((List
          <?>) obj));
                  }
           else if (obj instanceof Map) {
                      json.append(mapToJson((Map
          <??>) obj));
                  }
           else if (obj instanceof Set) {
                      json.append(setToJson((Set
          <?>) obj));
                  }
           else {
                      json.append(beanToJson(obj));
                  }

                  
          return json.toString();
              }


              
          public static String numberToJson(Number number) {
                  
          return number.toString();
              }


              
          public static String booleanToJson(Boolean bool) {
                  
          return bool.toString();
              }


              
          /** *//**
               * 
          @param bean
               *            bean對象
               * 
          @return String
               
          */

              
          public static String beanToJson(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 
          = objectToJson(props[i].getName());
                              String value 
          = objectToJson(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();
              }


              
          /** *//**
               * 
          @param list
               *            list對象
               * 
          @return String
               
          */

              
          public static String listToJson(List<?> list) {
                  StringBuilder json 
          = new StringBuilder();
                  json.append(
          "[");
                  
          if (list != null && list.size() > 0{
                      
          for (Object obj : list) {
                          json.append(objectToJson(obj));
                          json.append(
          ",");
                      }

                      json.setCharAt(json.length() 
          - 1']');
                  }
           else {
                      json.append(
          "]");
                  }

                  
          return json.toString();
              }


              
          /** *//**
               * 
          @param array
               *            對象數組
               * 
          @return String
               
          */

              
          public static String arrayToJson(Object[] array) {
                  StringBuilder json 
          = new StringBuilder();
                  json.append(
          "[");
                  
          if (array != null && array.length > 0{
                      
          for (Object obj : array) {
                          json.append(objectToJson(obj));
                          json.append(
          ",");
                      }

                      json.setCharAt(json.length() 
          - 1']');
                  }
           else {
                      json.append(
          "]");
                  }

                  
          return json.toString();
              }


              
          /** *//**
               * 
          @param map
               *            map對象
               * 
          @return String
               
          */

              
          public static String mapToJson(Map<??> map) {
                  StringBuilder json 
          = new StringBuilder();
                  json.append(
          "{");
                  
          if (map != null && map.size() > 0{
                      
          for (Object key : map.keySet()) {
                          json.append(objectToJson(key));
                          json.append(
          ":");
                          json.append(objectToJson(map.get(key)));
                          json.append(
          ",");
                      }

                      json.setCharAt(json.length() 
          - 1'}');
                  }
           else {
                      json.append(
          "}");
                  }

                  
          return json.toString();
              }


              
          /** *//**
               * 
          @param set
               *            集合對象
               * 
          @return String
               
          */

              
          public static String setToJson(Set<?> set) {
                  StringBuilder json 
          = new StringBuilder();
                  json.append(
          "[");
                  
          if (set != null && set.size() > 0{
                      
          for (Object obj : set) {
                          json.append(objectToJson(obj));
                          json.append(
          ",");
                      }

                      json.setCharAt(json.length() 
          - 1']');
                  }
           else {
                      json.append(
          "]");
                  }

                  
          return json.toString();
              }


          }

          posted on 2008-12-30 10:57 禮物 閱讀(846) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 临西县| 昭觉县| 万安县| 湘西| 涞水县| 内黄县| 曲沃县| 揭东县| 柞水县| 辽中县| 宿迁市| 内黄县| 临沭县| 唐河县| 新宁县| 绥江县| 洪雅县| 罗江县| 九江市| 平舆县| 栾城县| 孟村| 西畴县| 吴川市| 婺源县| 南郑县| 五指山市| 云霄县| 油尖旺区| 育儿| 开阳县| 琼中| 会昌县| 措勤县| 邢台市| 元氏县| 侯马市| 东乌珠穆沁旗| 漳州市| 锡林郭勒盟| 梁平县|