JS对象序列化为JSON对象的方法
var $ = $ || {};
/**
* 将JS对象序列化为JSON字符串
* @param {Mixed} o The variable to decode
* @return {String} The JSON string
* String json = $.encode(o);
*/
$.encode = (function() {
if ( typeof(JSON)!=='undefined' && typeof(JSON.stringify)!=='undefined') {
return JSON.stringify;
}
var I = !!{}.hasOwnProperty, _ = function(I) {
return I < 10 ? "0" + I : I;
}, A = {
"\b" : "\\b",
"\t" : "\\t",
"\n" : "\\n",
"\f" : "\\f",
"\r" : "\\r",
"\"" : "\\\"",
"\\" : "\\\\"
};
return (function(C) {
if (typeof C == "undefined" || C === null) {
return "null";
} else {
if (Object.prototype.toString.call(C) === "[object Array]") {
var B = ["["], G, E, D = C.length, F;
for (E = 0; E < D; E += 1) {
F = C[E];
switch (typeof F) {
case "undefined" :
case "function" :
case "unknown" :
break;
default :
if (G) {
B.push(",");
}
B.push(F === null ? "null" : $.encode(F));
G = true;
}
}
B.push("]");
return B.join("");
} else {
if ((Object.prototype.toString.call(C) === "[object Date]")) {
return "\"" + C.getFullYear() + "-" + _(C.getMonth() + 1) + "-" + _(C.getDate()) + "T" + _(C.getHours()) + ":" + _(C.getMinutes()) + ":" + _(C.getSeconds()) + "\"";
} else {
if (typeof C == "string") {
return "\"" + C.replace(/([\x00-\x1f\\"])/g, function(B, _) {
var I = A[_];
if (I) {
return I;
}
return '';
}).replace(/[^\u0000-\u00FF]/g, function($0) {
return escape($0).replace(/(%u)(\w{4})/gi, "\\u$2")
}) + "\"";
} else {
if (typeof C == "number") {
return isFinite(C) ? String(C) : "null";
} else {
if (typeof C == "boolean") {
return String(C);
} else {
B = ["{"], G, E, F;
for (E in C) {
if (!I || C.hasOwnProperty(E)) {
F = C[E];
if (F === null) {
continue;
}
switch (typeof F) {
case "undefined" :
case "function" :
case "unknown" :
break;
default :
if (G) {
B.push(",");
}
B.push($.encode(E), ":", $.encode(F));
G = true;
}
}
}
B.push("}");
return B.join("");
}
}
}
}
}
}
});
})();
JS对象序列化为JSON对象的方法的更多相关文章
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...
- jQuery表单验证以及将表单序列化为json对象小练习
jquery表单验证(非实时验证),同时,将表单序列化为json对象提交表单. <!DOCTYPE html> <html lang="en"> <h ...
- 类对象序列化为json串,json串反序列化为类对象
1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...
- 将表单序列化为JSON对象
将表单序列化为JSON对象的工具方法: $(function() { //工具方法,可以将指定的表单中的输入项目序列化为JSON数据 $.fn.serializeJson = function() { ...
- 023-将表单序列化为json对象
使用jQuery将表单序列化为json对象,其中serializeJson方法的名字任意,serializeArray()这个jQuery提供的方法.this指的就是谁调用了这个方法. $.fn.se ...
- 一般处理程序中 C#中对象转化为Json对象
namespace: Newtonsoft.Json; context.Response.ContentType = "application/text"; 注:这里为什么不是 J ...
- Jquery 将表单序列化为Json对象
大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法.不过,我们可以写一个插件实现. 我在网上看到有人用替换的方法,先用 ...
- 【jQuery】form表单元素序列化为json对象
序列化form表单元素为json对象: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head&g ...
随机推荐
- http://www.tmser.com/post-177.html
http://www.tmser.com/post-177.html http://maven.group.iteye.com/group/topic/21617
- 让网页在ie浏览器下以最高版本解析网页
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta ht ...
- 30分钟Git命令“从入门到放弃”
git 现在的火爆程度非同一般,它被广泛地用在大型开源项目中,但是初学者非常容易“从入门到放弃”,各种命令各种参数,天哪,宝宝要吓哭了.实际上新手并不需要了解所有命令的用途,学习是需要一个循序渐进的过 ...
- [TypeScript] Work with DOM Elements in TypeScript using Type Assertions
The DOM can be a bit tricky when it comes to typing. You never really know exactly what you're going ...
- MYSQL存储过程及事件
关于mysql下的存储过程以及事件的创建 以下这个存储过程主要实现的功能就是查询表里面半年前的数据,假设有就存到文件.然后将数据删除. CREATE DEFINER = `root`@`localho ...
- Ubuntu安装Mac皮肤
如果是ubuntu的PC版,在稳定性方面的要求不是非常高,而又想换换界面养养眼,像我一般只用我的Ubuntu12.04来写写代码,娱乐娱乐的,可以试试Ubuntu的Mac皮肤. 好了,废话不多说,上图 ...
- canvas锯齿
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Redis主从配置及通过Keepalived实现Redis自动切换高可用
Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区 作者:fuquanjun [字体:大 中 小] 一:环境介绍: M ...
- 特殊文件权限(setuid、setgid 和 Sticky 位)
可执行文件和公共目录可以使用三种特殊类型的权限:setuid.setgid 和 sticky 位.设置这些权限之后,运行可执行文件的任何用户都应采用该可执行文件属主(或组)的 ID. setuid 权 ...
- sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业,必须执行SVC
sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业.必须执行SVC ...