死亡并不可怕,可怕的是你没有真正活过。
依赖Jquery,以下是jquery.json代码:
(function (factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery'], factory);
} else if (typeof exports === 'object') {
factory(require('jquery'));
} else {
factory(jQuery);
}
}
(function ($) {
'use strict';
var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
meta = {
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"': '\\"',
'\\': '\\\\'
},
hasOwn = Object.prototype.hasOwnProperty;
$.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) {
if (o === null) {
return 'null';
}
var pairs, k, name, val,
type = $.type(o);
if (type === 'undefined') {
return undefined;
}
if (type === 'number' || type === 'boolean') {
return String(o);
}
if (type === 'string') {
return $.quoteString(o);
}
if (typeof o.toJSON === 'function') {
return $.toJSON(o.toJSON());
}
if (type === 'date') {
var month = o.getUTCMonth() + 1,
day = o.getUTCDate(),
year = o.getUTCFullYear(),
hours = o.getUTCHours(),
minutes = o.getUTCMinutes(),
seconds = o.getUTCSeconds(),
milli = o.getUTCMilliseconds();
if (month < 10) {
month = '0' + month;
}
if (day < 10) {
day = '0' + day;
}
if (hours < 10) {
hours = '0' + hours;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds < 10) {
seconds = '0' + seconds;
}
if (milli < 100) {
milli = '0' + milli;
}
if (milli < 10) {
milli = '0' + milli;
}
return '"' + year + '-' + month + '-' + day + 'T' +
hours + ':' + minutes + ':' + seconds +
'.' + milli + 'Z"';
}
pairs = [];
if ($.isArray(o)) {
for (k = 0; k < o.length; k++) {
pairs.push($.toJSON(o[k]) || 'null');
}
return '[' + pairs.join(',') + ']';
}
if (typeof o === 'object') {
for (k in o) {
if (hasOwn.call(o, k)) {
type = typeof k;
if (type === 'number') {
name = '"' + k + '"';
} else if (type === 'string') {
name = $.quoteString(k);
} else {
continue;
}
type = typeof o[k];
if (type !== 'function' && type !== 'undefined') {
val = $.toJSON(o[k]);
pairs.push(name + ':' + val);
}
}
}
return '{' + pairs.join(',') + '}';
}
};
$.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
return eval('(' + str + ')');
};
$.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
var filtered =
str
.replace(/\\["\\\/bfnrtu]/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
if (/^[\],:{}\s]*$/.test(filtered)) {
return eval('(' + str + ')');
}
throw new SyntaxError('Error parsing JSON, source is not valid.');
};
$.quoteString = function (str) {
if (str.match(escape)) {
return '"' + str.replace(escape, function (a) {
var c = meta[a];
if (typeof c === 'string') {
return c;
}
c = a.charCodeAt();
return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
}) + '"';
}
return '"' + str + '"';
};
}));
jsonDemo.aspx:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="js/jquery-1.10.2-min.js" type="text/javascript"></script>
<script src="js/jquery.json.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var obj = new Object();
obj.name = "张三";
obj.age = "12";
obj.job = "php";
var strjson = $.toJSON(obj);
$(".strjson").text(strjson);
});
</script>
<script type="text/javascript">
var thing = { plugin: 'jquery-json', version: 2.3 };
var encoded = $.toJSON(thing);
var name = $.evalJSON(encoded).plugin;
var version = $.evalJSON(encoded).version;
</script>
<script type="text/javascript">
var json='{"name":"CJ","age":18}';
data =(new Function("","return "+json))();
var dataStr="{root: " +
"[{name:'1',value:'0'}," +
"{name:'6101',value:'北京市'}," +
"{name:'6102',value:'天津市'}," +
"{name:'6103',value:'上海市'}," +
"{name:'6104',value:'重庆市'}," +
"{name:'6105',value:'渭南市'}," +
"{name:'6106',value:'延安市'}," +
"{name:'6107',value:'汉中市'}," +
"{name:'6108',value:'榆林市'}," +
"{name:'6109',value:'安康市'}," +
"{name:'6110',value:'商洛市'}]}";
var dataObj=eval("("+dataStr+")");
$.each(dataObj.root, function(idx, item) {
if (idx == 0) {
return true;
}
});
</script>
<script type="text/javascript">
var myquoteString = $.quoteString('"我们要去哪里?", 孩子问.We laughed and kept saying"see u soon",but inside we both knew we\'d never see each other again.我们笑着说再见,却深知再见遥遥无期。')
alert(myquoteString);
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
json字符串:<span class="strjson"></span>
</div>
<hr />
</form>
</body>
</html>
结果如图: