`
y1d2y3xyz
  • 浏览: 257062 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Extjs源码之-- Ext.util.JSON

阅读更多
很多写extjs的朋友说,Extjs的源码之间的关系太紧了,所以不能像其他很多框架那样,能分模块按需加载,但Ext很难做到,其实这确实是存在这样的问题,但如果作为一个框架,代码之间没有依赖性,那这代码必然不是最精简的,但其实Ext的很多代码还是依赖性很小的,自己稍微加工一下就可以做成自己需要的工具函数用!看代码

//JSON对象和String对象转化
Ext.util.JSON = {
	//格式化数字<10的前面补0
	pad : function(n) {
		return n < 10 ? "0" + n : n;
	},
	//把字符串转化为JSON格式
	decode:function(json){
		return eval("(" + json + ')'); 
	},
	//把JSON对象转化为字符串
	encode:function(o){
		if(typeof o == "undefined" || o === null){
			return "null";
		}else if(Ext.isArray(o)){//数组
            var a = ["["], b, i, l = o.length, v;
			for (i = 0; i < l; i++) {
				v = o[i];
				switch (typeof v) {
					case "undefined":
					case "function":
					case "unknown":
						break;
					default:
						if (b) {
							a.push(',');
						}
						a.push(v === null ? "null" : Ext.util.JSON.encode(v));
						b = true;
				}
			}
			a.push("]");
			return a.join("");
		}else if(Ext.isDate(o)){//日期对象
			return '"' + o.getFullYear() + "-" +
				Ext.util.JSON.pad(o.getMonth() + 1) + "-" +
				Ext.util.JSON.pad(o.getDate()) + " " +
				Ext.util.JSON.pad(o.getHours()) + ":" +
				Ext.util.JSON.pad(o.getMinutes()) + ":" +
				Ext.util.JSON.pad(o.getSeconds()) + '"';
		}else if(typeof o == "string"){//字符串,转义回车换行,双引号,反斜杠...等
			var m = {
					"\b": '\\b',
					"\t": '\\t',
					"\n": '\\n',
					"\f": '\\f',
					"\r": '\\r',
					'"' : '\\"',
					"\\": '\\\\'
			};
            if (/["\\\x00-\x1f]/.test(o)) {
                return '"' + o.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                    var c = m[b];
                    if(c){
                        return c;
                    }
                    c = b.charCodeAt();
                    return "\\u00" +
                        Math.floor(c / 16).toString(16) +
                        (c % 16).toString(16);
                }) + '"';
            }
            return '"' + o + '"';
		}else if(typeof o == "number"){
			return isFinite(o) ? String(o) : "null";
		}else if(typeof o == "boolean"){
			return String(o);
		}else {//json格式的对象
			var a = ["{"], b, i, v;
			for (i in o) {
				v = o[i];
				switch (typeof v) {
				case "undefined":
				case "function":
				case "unknown":
					break;
				default:
					if(b){
						a.push(',');
					}
					a.push(Ext.util.JSON.encode(i), ":", v === null ? "null" : Ext.util.JSON.encode(v));
					b = true;
				}
			}
			a.push("}");
			return a.join("");
		}    
	}
};
Ext.encode = Ext.util.encode;
Ext.decode = Ext.util.decode;
分享到:
评论

相关推荐

    extjs-Ext.ux.form.LovCombo下拉框

    标题中的"extjs-Ext.ux.form.LovCombo下拉框"表明我们要讨论的是EXTJS中的一个特定组件,它是EXTJS的扩展插件,用于实现具有多选功能的下拉框。这个组件在处理火狐浏览器兼容性问题上做了优化,解决了在火狐浏览器下...

    ext-lang-en.js和ext-lang-zh_CN.js

    Extjs中实现国际化要用到的文件ext-lang-zh_CN.js和ext-lang-en.js

    3------通过实例学习------Ext.js------.docx

    &lt;script src="extjs/ext-all-debug.js"&gt; ;width:320px;height:240px;border:1px solid #ccc;background:#ffc;padding:5px;line-height:25px;font-size:14px"&gt; Ext.onReady(function() { Ext.Msg.show({ ...

    extjs jsb文件(ext-4.2.1.883.jsb2)

    从ext官方论坛上下的。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.1.883

    ext-4.2.1.883.jsb2

    从spket IDE 官网下载。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.*版本。spket自动提示ExtJs4,需要ext4.2.1.jsp2文件。

    extjs-docs-6.0.0-classic.part01.rar

    Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...

    Extjs 6.2 最新sdk ext-6.2.0-gpl.zip

    官方最新版本Extjs6.2版本sdk,创建新项目的时候需要用, 全面的核心框架,具有最新的Javascript标准支持 新的漂亮组件和主题,以创建漂亮的企业应用程序 现代工具链,用于构建优化,高性能,通用的应用程序 用于可视...

    ExtJs4.0 使用心得@1 Ext.util.Format.Number()

    本文将深入探讨Ext.util.Format.Number()函数,它是ExtJS 4.0中的一个重要工具,用于格式化数字。 `Ext.util.Format`是ExtJS中一个非常实用的工具类,包含了一系列用于字符串、日期和数值等类型的数据格式化的静态...

    Extjs源码之--Ext事件机制/继承关系

    在“Extjs源码之--Ext事件机制/继承关系”中,我们将深入探讨EXTJS如何处理事件以及其类层次结构。EXTJS的事件处理主要由EventManager.js这个文件负责,它是EXTJS事件系统的基础。 首先,EXTJS的事件机制基于观察者...

    ext-4.2.1.883.7z 官方最新版7z压缩

    标题中的"ext-4.2.1.883.7z"指的是ExtJS框架的一个特定版本,4.2.1.883,它被压缩成了7z格式的文件。7z是一种高效的文件压缩格式,由7-Zip软件创建,以提供更高的压缩比和更快的解压缩速度。7z文件通常需要使用支持7...

    ExtJs选中var editor = new Ext.ux.grid.RowEditor详解

    ### ExtJs选中 `var editor = new Ext.ux.grid.RowEditor` 详解 在Web开发领域,特别是使用ExtJs框架进行复杂用户界面构建时,`RowEditor` 是一个非常实用的功能,它允许用户直接在表格行内编辑数据,极大地提高了...

    ExtJs学习资料28-Ext.data.JsonStore数据存储器.doc

    在ExtJs框架中,JsonStore是一种非常重要的数据存储器,它专门用来处理和展示JSON格式的数据。本资料主要讲解如何使用JsonStore来加载并显示数据,以创建一个简单的个人信息表格。 首先,为了使用ExtJs框架,我们...

    ext-7.0.0-gpl.zip

    标题中的"ext-7.0.0-gpl.zip"是一个软件扩展或库的压缩包,遵循GPL(GNU General Public License)开源协议。这通常意味着它是一个免费的、可修改的软件,用户可以查看源代码并根据需要进行定制,但必须保留原始许可...

    ext-7.2.0.67.zip

    Sencha Ext JS is the most comprehensive JavaScript framework for building data-intensive, cross-platform web and mobile applications for any modern device. Ext JS includes 140+ pre-integrated and ...

    extjs-4.2.1.883.7z

    js框架 extjs-4.2.1.883.7z

    extjs-json-数据转换

    使用ExtJs获取后台json格式的数据必须的七个jar包,commons-beanuti-1s-1.7.0.jar,commons-collections-3.1.jar,commons-lang-2.5.jar,commons-logging-1.0.4.jar,ezmorph-1.0.4.jar,json-lib-2.1.jar,...

    ext-4.2.0.663 EXTJS官方最新版7z压缩

    在本压缩包"ext-4.2.0.663 EXTJS官方最新版7z压缩"中,文件名"ext-4.2.0.663"表明这是EXTJS 4.2.0的某个更新版本,具体为663号更新。这个版本可能包含了EXTJS框架的新特性、bug修复或者性能改进。由于使用了7z压缩,...

    extjs-620-docs.zip

    extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档

    extjs-docs-6.0.0-classic.part02.rar

    Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...

    extjs-700-docs离线文档.zip

    这个"extjs-700-docs离线文档.zip"文件包含了ExtJS 7.0.0版本的完整离线开发文档,旨在帮助开发者在没有网络连接的情况下也能便捷地查阅API、示例和指南。 1. **ExtJS 7.0.0**: 这是ExtJS的一个主要版本,它引入了...

Global site tag (gtag.js) - Google Analytics