14好的学习

//包名
package JSON;

//引用包
/* 注意:
* 引用java
*/
import java.lang.reflect.Array;

//引用包
/* 注意:
* 类提供了动态创建和访问数组元素的各种静态方法
*/
import java.util.ArrayList;

//引用包
/* 注意:
* 提供公共的执行操作方法的接口
*/
import java.util.Collection;

//引用包
/* 注意:
* 提供公共的执行操作方法的基于哈希表的 Map 接口的实现
*/
import java.util.HashMap;

//引用包
/* 注意:
* 提供公共的执行操作方法的对 collection 进行迭代的迭代器
*/
import java.util.Iterator;

//引用包
/* 注意:
* 提供公共的执行操作方法的列表
*/
import java.util.List;

//引用包
/* 注意:
* 提供公共的执行操作方法的映射到值的对象
*/
import java.util.Map;

//引用包
/* 注意:
* 提供公共的执行操作方法的接口
*/
import java.util.Map.Entry; 

//公共的类名
/**
* JsDataTools 类
* @author xinjie
*
*/
/*
* JS数据交换格式
* @version v0.1
* @author longHP
*/ 
public class JsDataTools { 

//定义方法
/**
* getJsData() 方法
* @param Object obj
* @return createJsData(obj)
*/
    /*
     * 获取js数据
     * @param 元数据map
     * @return js数据
     */ 
    public synchronized static String getJsData(Object obj) {
    //返回值
        return createJsData(obj); 
    }
   
    //自动生成   
    @SuppressWarnings("unchecked")
   
    //定义方法
    /**
     * createJsData()方法
     * @param Object obj
     * @return"\"\""
     */
    /* 注意:
     * 生成js数据
     * @param 元数据map
     * @return js数据
     */
    public static String createJsData(Object obj) {
   
    //if语句
    /* 注意:
    * 如果null等于odj
    */
        if (null == obj) {
       
        //返回值
            return "\"\""; 
        }
       
        //创建实例化对象
        /* 注意:
         * StringBuffer
         * 线程安全的可变字符序列
         */
        StringBuffer resultStr = new StringBuffer(); 
       
        //if语句
        /* 注意:
         * 如果obj
         * instanceof
         * 作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
         * Collection
         * 集合List、Set等类型
         */
        if (obj instanceof Collection) {
       
        //调用方法
            resultStr.append("[");
           
            //把接口类型的obj赋值给接口卡类型collection
            Collection collection = (Collection) obj;
           
            //if语句
            /* 注意:
             * 接口类型的collection的存储空间>0
             */
            if (collection.size() > 0) {
           
            //获得返回包含此 collection 中所有元素的数组给元素的表示数组形式的collectionObj
                Object[] collectionObj = collection.toArray();
               
                //if语句
                /* 注意:
                 * 字符型i = 0 i < collectionObj的数组长度 i+1
                 */
                for (int i = 0; i < collectionObj.length; i++) { 
               
                //将createJsData方法参数追加到序列resultSrr
                    resultStr.append(createJsData(collectionObj[i]) + ","); 
                }
               
                //resultStr移除此序列指定位置的 char参数
                resultStr.deleteCharAt(resultStr.lastIndexOf(",")); 
            }
           
            //调用方法
            resultStr.append("]");
           
          //if语句
          /* 注意:
           * 否则如果 Obj
           * 作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
           * Map类型
           */
        } else if (obj instanceof Map) {   
       
        //调用方法
            resultStr.append("{");
           
            //将Map里面所有映射的 obj给Map类型的map
            Map map = (Map) obj; 
           
            //if语句
            /* 注意:
             * map储存空间 > 0
             */
            if (map.size() > 0) {
           
            //将map对象迭代的迭代器给iter
            /* 注意:
            * Iterator
            * 迭代器泛型里面是
            * Entry
            * 接口
            */
                Iterator<Entry> iter = map.entrySet().iterator(); 
               
                //whlie循环语句
                /* 注意;
                 * while
                 * 循环条件
                 * iter
                 * hasNext()
                 * 是否还有下一个
                 */
                while (iter.hasNext()) { 
               
                //
                    Map.Entry entry = iter.next(); 
                    String key = entry.getKey().toString(); 
                    resultStr.append("\"" + key + "\":");    // jquery1.4以上要求双引号包裹 
                    Object tempObj = entry.getValue(); 
                    resultStr.append(createJsData(tempObj) + ","); 
                } 
                resultStr.deleteCharAt(resultStr.lastIndexOf(",")); 
            } 
            resultStr.append("}"); 
        } else {    // 基本类型 
            try { 
                int arrLength = Array.getLength(obj); 
                resultStr.append("["); 
                if (arrLength > 0) { 
                    for (int i = 0; i < arrLength; i++) { 
                        resultStr.append(createJsData(Array.get(obj, i)) + ","); 
                    } 
                    resultStr.deleteCharAt(resultStr.lastIndexOf(",")); 
                } 
                resultStr.append("]"); 
            } catch (IllegalArgumentException e) {    // 不是数组,是最基本的数据 
                resultStr.append("\"" + stringToJson(obj + "") + "\""); 
            } 
        } 
        return resultStr.toString(); 
    } 
     
    /**
     * 处理特殊字符
     * @param json字符串
     * @return 处理过的字符串
     */ 
    public static String stringToJson(String str) { 
        StringBuffer sb = new StringBuffer(); 
        for (int i = 0; i < str.length(); i++) { 
            char c = str.charAt(i); 
            switch (c) { 
                case '\"': 
                    sb.append("\\\""); 
                    break; 
                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; 
                default: 
                    sb.append(c); 
            } 
        } 
        return sb.toString(); 
    } 
     
    @SuppressWarnings("unchecked") 
    public static void main(String[] args) { 
        Map<String, Object> map = new HashMap<String, Object>(); 
        map.put("a", "1"); 
        map.put("b", "2"); 
        int[] intArr = {1,2,3}; 
        map.put("intArr", intArr); 
        Map childMap = new HashMap(); 
        childMap.put(3, 5); 
        childMap.put(7, new HashMap()); 
        childMap.put(new Object(), intArr); 
        map.put("map", childMap); 
        List childList = new ArrayList(); 
        childList.add(true); 
        childList.add(new ArrayList()); 
        childList.add(intArr); 
        map.put("list1", childList); 
        System.out.println(JsDataTools.getJsData(map)); 
    } 

if如果 else否 for循环 Boolean是否

猜你喜欢

转载自xjwolaile.iteye.com/blog/1632140
今日推荐