Terry.Li-彬

          虛其心,可解天下之問(wèn);專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 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對(duì)象
               * 
          @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對(duì)象
               * 
          @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
               *            對(duì)象數(shù)組
               * 
          @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對(duì)象
               * 
          @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
               *            集合對(duì)象
               * 
          @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 禮物 閱讀(845) 評(píng)論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 乌兰县| 蓝山县| 遵化市| 克东县| 县级市| 延川县| 绥阳县| 梅河口市| 洛南县| 哈尔滨市| 崇礼县| 永定县| 兴业县| 镇远县| 华宁县| 合阳县| 鸡泽县| 河北省| 前郭尔| 河东区| 油尖旺区| 同心县| 荔波县| 蒲江县| 寿光市| 同江市| 微博| 施秉县| 神池县| 呼图壁县| 道孚县| 肇州县| 来宾市| 疏勒县| 南昌县| 新化县| 卓尼县| 乌拉特前旗| 喜德县| 定西市| 吉木乃县|