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 ...
随机推荐
- Item 33: 避免覆盖(hiding)“通过继承得到的名字”
莎士比亚有一个关于名字的说法."What's in a name?" 他问道,"A rose by any other name would smell as sweet ...
- android简单的答题游戏
笔者最近开始沦陷于android,从开始入门到现在已经快半个月的时间,于是便写一个较综合,用到了数据库,多线程操作,以及时钟的添加和停止消除,activity之间的动画转换等,适用于初学者学以致用的小 ...
- PHP5.3下加速器ZendGuardLoader安装 (LNMP/lnmpa)
PHP5.3下加速器ZendGuardLoader安装 (LNMP/lnmpa) 由于Zend新产品ZendGuardLoader的面世,Zend Optimizer已经不支持php5.3了,官方给出 ...
- 解决Android NDK 报jxxx编译找不到
如题 解决: 引入NDK对应的arm或者x86库 如果你用的是GinyMotion模拟器,那就引入x86库 不多说了,见截图 1.选择Propertities->C/C++ General-&g ...
- ztree3.5.02选中结点时报错
ztree3.5.02选中结点时报错 更新jquery版本后,使用jquery1.1.1,左键点击Tree里的节点的时候报错,虽然不影响显示,但是在chrome控制台显示报错 Uncaught Typ ...
- php读取ini(init)文件
<?php header('content-type:text/html;charset=utf-8'); //读取.init文件 $config_file_path = './config/d ...
- git 关联远程分支
问题解析: git本地新建一个分支后,必须要做远程分支关联.如果没有关联, git 会在下面的操作中提示你显示的添加关联.关联目的是如果在本地分支下操作: git pull, git push ,不需 ...
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk ...
- 【VBA编程】11.Application对象
Application对象常用属性[ActiveCell属性]ActiveCell属性返回一个Range对象,表示当前窗口或指定窗口中的单元格.如果窗口没显示工作表,则此属性无效.[代码区域] Sub ...
- 【PHP】导入、导出Excel表格(有使用PHPExcel和不使用的两个版本)
------------ 首先,导出excel ---------------- 一.不使用PHPExcel的版本,很简单的一个方法,简洁.推荐 很简单的导出一个exc ...