扩展代码://扩展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);
转自:http://irobot.blog.hexun.com/22901771_d.html