原文地址:http://hi.baidu.com/124232323/blog/item/07f9fd954b6fe540d0135e66.html
//扩展jQuery对json字符串的转换
jQuery.extend({
/** * @see 将json字符串转换为对象 * @param json字符串 * @return 返回object,array,string等对象 */
evalJSON: function(strJson) {
return eval("(" + strJson + ")");
}
});
jQuery.extend({
/** * @see 将javascript数据类型转换为json字符串 * @param 待转换对象,支持object,array,string,function,number,boolean,regexp * @return 返回json字符串 */
toJSON: function(object) {
var
type
=
typeof
object;
if ('object' == type) {
if (
Array
== object.constructor)
type
=
'array'
;
else if (
RegExp
== object.constructor)
type
=
'regexp'
;
else
type
=
'object'
;
}
switch (type) {
case 'undefined':
case 'unknown':
return;
break;
case 'function':
case 'boolean':
case 'regexp':
return object.toString();
break;
case 'number':
return isFinite(object) ? object.toString() : 'null';
break;
case 'string':
return '"' + object.replace(/(//|/")/g, "//$1").replace(//n|/r|/t/g, function() {
var
a
=
arguments
[0];
return (
a
== '/n') ? '//n': (
a
== '/r') ? '//r': (
a
== '/t') ? '//t': ""
}) + '"';
break;
case 'object':
if (
object
=== null) return 'null';
var
results
= [];
for (var property in object) {
var
value
=
jQuery
.toJSON(object[property]);
if (value !== undefined) results.push(jQuery.toJSON(property) + ':' + value);
}
return '{' + results.join(',') + '}';
break;
case 'array':
var
results
= [];
for (var
i
=
0
; i
<
object.length
; i++) {
var
value
=
jQuery
.toJSON(object[i]);
if (value !== undefined) results.push(value);
}
return '[' + results.join(',') + ']';
break;
}
}
});
示例:
var
obj
= {
name: "sean",
friend: ["fans", "bruce", "wawa"],
action: function() {
alert("gogogog")
},
boy: true,
age: 26,
reg: //b([a-z]+) /1/b/gi,
child: {
name: "none",
age: -1
}
};
var
json
= $.toJSON(obj);
var
objx
= $.evalJSON(json);
|