Terry.Li-彬

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          <2015年6月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(19)

          隨筆分類(107)

          隨筆檔案(141)

          文章分類(284)

          文章檔案(342)

          相冊

          收藏夾(58)

          家裝

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

           

          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 2009-01-05 23:11 禮物 閱讀(2587) 評論(1)  編輯  收藏 所屬分類: java

          評論

          # re: 將任意格式轉換為JSON數據格式的工具類 2015-06-19 14:19
          ["d":“氣而去”]  回復  更多評論
            

          主站蜘蛛池模板: 凌云县| 屯昌县| 晋州市| 池州市| 冷水江市| 朔州市| 蒙自县| 新疆| 余庆县| 汤原县| 老河口市| 大兴区| 沙洋县| 增城市| 尼玛县| 冕宁县| 双流县| 枣阳市| 邹平县| 辽阳市| 金华市| 勃利县| 巴林左旗| 阿拉善盟| 阿勒泰市| 京山县| 黄山市| 朝阳区| 甘谷县| 夏津县| 陕西省| 辽中县| 古浪县| 介休市| 无棣县| 会理县| 台江县| 达拉特旗| 赣州市| 东莞市| 汉阴县|