扩展jQuery对json字符串的转换
来源:互联网 发布:大数据分析技术现状 编辑:程序博客网 时间:2024/05/09 06:23
- //扩展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);