/**
* JSON 解析类
* Copyright (c) 2010 YaoYiLang
* @email redrainyi@gmail.com
* @datetime 2008-04-18
* @version 1.0
*
* 方法:
* 将JSON字符串解码为页面可识别的object对象
* @param {String} json The JSON string
* @return {Object} The resulting object
* Object o = JSONUtil.decode(json);
*
* 将JS对象序列化为JSON字符串
* @param {Mixed} o The variable to decode
* @return {String} The JSON string
* String json = JSONUtil.encode(o);
*/
var JSONUtil;
if (!JSONUtil) {
JSONUtil = {};
}
JSONUtil.decode = function(json) {
try {
return eval("\u0028" + json + '\u0029');
} catch (exception) {
return eval("\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
}
};
JSONUtil.encode = (function() {
var $ = !!{}.hasOwnProperty, _ = function($) {
return $ < 10 ? "0" + $ : $
}, A = {
"\b" : "\\b",
"\t" : "\\t",
"\n" : "\\n",
"\f" : "\\f",
"\r" : "\\r",
"\"" : "\\\"",
"\\" : "\\\\"
};
return (function(C) {
if (typeof C == "\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064" || C === null)
return "null";
else if (Object.prototype.toString.call(C) === "\u005b\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0041\u0072\u0072\u0061\u0079\u005d") {
var B = ["\u005b"], G, E, D = C.length, F;
for (E = 0; E < D; E += 1) {
F = C[E];
switch (typeof F) {
case "\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064" :
case "\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e" :
case "\u0075\u006e\u006b\u006e\u006f\u0077\u006e" :
break;
default :
if (G)
B.push("\u002c");
B.push(F === null ? "null" : this.encode(F));
G = true
}
}
B.push("\u005d");
return B.join("")
} else if ((Object.prototype.toString.call(C) === "\u005b\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0044\u0061\u0074\u0065\u005d"))
return "\"" + C.getFullYear() + "-" + _(C.getMonth() + 1) + "-" + _(C.getDate()) + "T" + _(C.getHours()) + ":" + _(C.getMinutes()) + ":" + _(C.getSeconds()) + "\"";
else if (typeof C == "\u0073\u0074\u0072\u0069\u006e\u0067") {
if (/["\\\x00-\x1f]/.test(C))
return "\"" + C.replace(/([\x00-\x1f\\"])/g, function(B, _) {
var $ = A[_];
if ($)
return $;
$ = _.charCodeAt();
return "\\u00" + Math.floor($ / 16).toString(16) + ($ % 16).toString(16)
}) + "\"";
return "\"" + C + "\""
} else if (typeof C == "\u006e\u0075\u006d\u0062\u0065\u0072")
return isFinite(C) ? String(C) : "null";
else if (typeof C == "\u0062\u006f\u006f\u006c\u0065\u0061\u006e")
return String(C);
else {
B = ["\u007b"], G, E, F;
for (E in C)
if (!$ || C.hasOwnProperty(E)) {
F = C[E];
if (F === null)
continue;
switch (typeof F) {
case "\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064" :
case "\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e" :
case "\u0075\u006e\u006b\u006e\u006f\u0077\u006e" :
break;
default :
if (G)
B.push("\u002c");
B.push(this.encode(E), "\u003a", this.encode(F));
G = true
}
}
B.push("\u007d");
return B.join("")
}
})
})();
window.JSONUtil = JSONUtil;
分享到:
相关推荐
将众多表单属性序列化为json对象,大大简化了代码量。
扩展javascript中的Object原型,支持将对象序列化成json字符串
有时您需要将对象序列化为 JSON 并再次反序列化它们。 但是 JSON stringify/parse 是不够的,因为你需要支持循环链接和恢复自定义对象。 Dumpjs 允许轻松序列化为 JSON 并恢复任何对象。 要点: 它处理循环链接 ...
本文实例讲述了jQuery实现form表单元素序列化为json对象的方法。分享给大家供大家参考,具体如下: 这段代码序列化form表单元素为json对象: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml>...
jsonify 每个对象都可以序列化为 json。
将 GraphQL 操作转换为普通的旧 JS 对象 (POJO),准备好序列化为 JSON。 这可用于解析传递给GraphQL解析器的info参数( GraphQLResolveInfo )。 安装 npm i -S graphql-operation-to-pojo 或者: yarn add ...
Jsonex JSONCoder是一个轻量级的通用对象序列化/反序列化库,类似于Jackson,GSON或FastJson。 多年来,该库已在各种eBay项目中广泛使用。 它不能替代其他流行的库。 但是,它解决了一些其他替代产品无法提供或无法...
对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript
目前会同时序列化为JSON和Google Protobuf格式。概述tanagra.js项目旨在为javascript开发人员提供将复杂的嵌套类序列化为可通过网络传输或存储在数据存储(例如redis)中的格式的能力。 反序列化的对象包含原始类的...
简单的实用程序,用于将页面文档对象模型序列化为JSON。 用法 序列化整个文档。 var dom2json = require('dom2json'); var json = dom2json.serialize(document.documentElement); 使用过滤器不将脚本和iframe...
将JavaScript序列化为JSON的超集,其中包括正则表达式,日期和函数。 总览 该程序包中的代码开始作为的内部模块开始使用。 为了扩大其用途,它现在用作serialize-javascript -npm上的独立软件包。 您可能想知道: ...
这里面是我自己对一些常用工具的封装,都是以对象的形式呈现,具体使用方法请参考我的博客:https://blog.csdn.net/qq_36934826/article/details/79826690 如果觉得可以的话给我一个支持哦
在Django中,关于如何将model类序列化为json,一般的话有两a器 将model类转为字典,再使用json库的dumps方法转为json 第一种方法就不多讲了,直接去看官方文档就好啦 一般来说,官方提供的方法应该都是比较好用和...
状态复制接受一个对象作为输入,然后将其序列化为JSON并将其复制到剪贴板使从浏览器将应用程序状态复制到剪贴板更容易。用法var stateCopy = require ( 'state-copy' )window . addEventListener ( 'keyup' , ...
将JavaScript表达式安全地序列化为JSON的超集,其中包括Dates,BigInts等。主要特点 :bento_box: 可靠的序列化和反序列化 :locked_with_key: 具有自动补全功能的类型安全 :paw_prints: 可以忽略的运行时占用空间 :...
将表单字段序列化为JSON表示形式。 关于 该项目是一个分支,它不依赖于骨干网和jquery。 它旨在使将表单字段序列化为简单的JSON对象变得容易。 正在安装 npm install dom-form-serializer 基本用法 连载 var ...
JavaScript提供的一个操作JSON序列化的方法,其作用:将JSON对象序列化为字符串(第一个参数);分离提取部分数据,转换处理键值(第二个参数);美化输出结果(第三个参数)
将它们序列化为JSON。 围绕它们构建自己的功能。概述程序员花费大量时间试图将领域语言压缩为编程语言。 有时它不合适,他们必须重新开始。 有时,领域语言会变得流行起来,并以标准化的JSON或YAML格式找到它。 ...
简单的nodejs实用程序,用于在序列化为JSON文件的数组中查找非唯一键。 比较是在序列化元素字符串上完成的。 安装 $ npm install git+https://github.com/pmstss/json-non-unique-finder.git 用法 命令行 $ git ...