/**
?* 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;
详细解决方案
JS对象序列化作JSON对象
热度:263 发布时间:2012-09-07 10:38:15.0
相关解决方案
- (Struts2+JSON+Ajax) XMLHttpRequest ==500如何解决
- json 解析有关问题
- struts2-json中诠注@JSON(deserialize=false)是什么用?不是阻止JSON反序列化成JAVA对象吗?求解
- 请教哪里可以上到 struts2-json-plugin-2.1.8的源文件
- java+jquery easy ui + json + struts分页例子
- ssh json jar 有关问题
- json 有关问题
- AJAX 传递数据如何样才可以是 json
- jquery.load(*json) 解析不已。求帮忙
- JSON,AJAX
- 2中,可是一直发生java.lang.NoClassDefFoundError: net/sf/json/
- json 转成 string解决办法
- json ,Map转json,全部分了
- jquery ajax+json(插件) 提交数据,让人捉摸不透的是:【部分中文显示问号】,该怎么解决
- json 序列化有错误怎么办
- JQUERY json 传值有关问题
- 获取 天候Api 返回的 json 数据
- MVC(Json) 出现提示上载
- MVC,linq,json,有关问题不知道如何描述,跪求
- json 序列化有关问题?当列名为可变数值时,如果序列化
- HttpWebRequest post json 数据,接受应该怎么获取啊
- 在于json。超级郁闷。上载了Newtonsoft.Json,可是没有JavaScriptArray属性,这是为什么呀
- 急MVC3 返回 Json 有关问题
- jquery +json +html 怎么做分页
- JSON.parse是那里定义的,小弟我在vs2008里js函数里调用了
- jqGrid json 不显示数据,该如何处理
- json 反序列化 为.net对象,该如何处理
- JQUERY AJAX JSON 有关问题 求大侠指点
- json 转成 Dataset 保存到数据库,该怎么处理
- json[0].CodeID值为undefined解决方法