`

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是否
分享到:
评论

相关推荐

    2017年版企业会计准则第14号收入的学习与应用.pptx

    2017年版企业会计准则第14号收入的学习与应用

    无法运行2015年03月14号656安卓LW基于安卓的推箱子游戏设计与开发.zip

    无法运行2015年03月14号656安卓LW基于安卓的推箱子游戏设计与开发.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    深度学习matlab源代码案例实战前十五章.zip

    深度学习机器学习图像处理的matlab源代码前十五章实战整理集合 第 01 章 基于直方图优化的图像去雾技术 第 02 章 基于形态学的权重自适应图像去噪 第 03 章 基于多尺度形态学提取眼前节组织 第 04 章 基于Hough变化...

    oracle11g学习笔记

    oracle11g学习笔记一 1 一、以下是sqlplus常用命令 2 一、Oracle用户管理 4 二、权限和角色 4 权限包含系统权限和对象权限 5 角色 5 权限的传递 6 使用profile 管理用户口令 8 (1)帐号锁定 8 (2)给账户解锁 8 (3)...

    神经网络+机器学习+数学基础+python模块入门/速查表大全

    其中1-11号文件为python内各种数学及统计模块速查表;12-15为机器学习所需基本数学知识速查表; 16-21为机器学习算法速查表;22为神经网络的分类文档;23为各大类算法的总结表。 内容丰富全面,适合机器学习入门者及...

    计算机数据库基础及应用PPT学习教案.pptx

    例2: 相对定位记录 Use xsqk Skip Skip 3 Skip -2 use &&定位到5号记录 &&定位到3号记录 &&定位到下一条记录即2号记录 第6页/共14页 计算机数据库基础及应用PPT学习教案全文共14页,当前为第7页。 (4)条件定位 ...

    电信通信基础学习教程

    ㈠时分接线器的原理 14 ㈡空分接线器的基本原理 15 习题 16 第三部分 信令方式 17 一.信令的基本概念 17 ㈠ 什么是信令 17 ㈡信令的分类 17 二.中国一号信令 18 ㈠中国一号信令 18 ㈡线路信令 19 ㈡记发器信号 19 ...

    金山卫士学习第一天源代码

    黑马程序员Android版金山卫士学习第一天源代码,可以参考代码学习一些小功能的实现。知识点:1、项目的代码组织结构 2、PackageManager 获取应用程序的版本号; 3、URL HttpUrlConntion 4、子线程 handler + message...

    本办法学习python

    习题 14: 提示和传递 习题 15: 读取文件 习题 16: 读写文件 习题 17: 更多文件操作 习题 18: 命名、变量、代码、函数 习题 19: 函数和变量 习题 20: 函数和文件 习题 21: 函数可以返回东西 习题 22: 到现在你学到了...

    HB1531A_M4说明书

    14.长按设置键进入学习状态的时间可选择 2 秒/2.5 秒/3 秒,学习状 态不按键可选择 8 秒/30 秒自动退出; 15.同时按住[SET + S21]键可立即进入学习设置状态; 16.长按[S8 + S28]键 7 秒可切换第二组码,避免串码; ...

    计算机应用基础中职PPT学习教案.pptx

    中国计算机的发展 银河3号 神威蓝光 龙芯CPU 曙光5000A 第7页/共11页 计算机应用基础中职PPT学习教案全文共11页,当前为第8页。 9 1.4 拓展与提高 2.未来计算机 量子 计算机 神经网络计算机 生物 计算机 第8页/共11...

    鸟哥的Linux私房菜基础学习篇(第二版PDF)02

     第2章 如何学习Linux   第3章 Linux主机的规划   第4章 安装FC4与多重启动技巧   第5章 启动关机、在线求助与执行命令的方式  第二部分 Linux文件、目录与磁盘格式  第6章 Linux的文件属性与目录...

    韩顺平oracle学习笔记

    2、开始,,程序,,Oracle - oracle的版本号,我的是10ghome,,Oracle Installation Products,, Universal Installer 卸载oracle 3、进注册表,regedit,删除选择 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。HKEY_...

    leve6网络编程学习笔记.pdf

    leve6网络编程学习笔记.pdf

    手机学习单元测试管理教师页面模板.zip

    移动端学生提纲,单元测试,课程测试,班级建设,教师学情统计后台管理手机模板html下载。主要有:登录、我的班级、成绩排名、班级列表、章节目录、创建班级、班级号、易错题统计、题目统计、主页面等总共14个页面。

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    完全站在没有编程经验读者的角度,手把手教会读者学习Java 配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、...

    Maven权威指南 很精典的学习教程,比ANT更好用

    版本构建号 9.3.1.2. SNAPSHOT版本 9.3.1.3. LATEST 和 RELEASE 版本 9.3.2. 属性引用 9.4. 项目依赖 9.4.1. 依赖范围 9.4.2. 可选依赖 9.4.3. 依赖版本界限 9.4.4. 传递性依赖 9.4.4.1. 传递性依赖和...

    net学习笔记及其他代码应用

    28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答:Select ID FROM table1 Where ...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_...

    LINGO软件的学习

    为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集...

Global site tag (gtag.js) - Google Analytics