JSON对象转字符串的一些方法

简介: 原文http://www.nowamagic.net/librarys/veda/detail/374  将后台程序(如php)发送过来的json数据转化为javascript的数组或者对象的方法十分简单,代码如下:1    // 假设后台发送的json数据为 '{a:2,b:1}' 存储于str...

原文http://www.nowamagic.net/librarys/veda/detail/374

 将后台程序(如php)发送过来的json数据转化为javascript的数组或者对象的方法十分简单,代码如下:
1    // 假设后台发送的json数据为 '{a:2,b:1}' 存储于str中
2    var data = eval( '(' + str + ')' );

然而想将一个javascript对象转化为json格式的字符串却并不那么简单,特别是对象的属性值递归包含一个对象时(如 var obj={a:[2,3],b:{m:[3,4],n:2} } ),那么有没有什么方法将obj转化为json格式的字符串呢?

当然你可以自己写一个函数,递归遍历一个对象并将其转化为json格式的字符串,对于大部分人来说这有些困难并容易出错。幸好已经有人做好了这件事情,你只用包含一段javascript代码即可。

json2.js

使用方法:
01    <!doctype html>
02    <html>
03    <body>
04    <script src="json2.js"></script>
05    <script>
06    var obj={a:[2,3],b:{m:[3,4],n:2} };
07    var jsonStr = JSON.stringify( obj );
08    alert(jsonStr);
09    //将显示 {"a":[2,3],"b":{"m":[3,4],"n":2}}
10    </script>
11    </body>
12    </html>

假如有两个变量,我要将a转换成字符串,将b转换成JSON对象:
1    var a={"name":"tom","sex":"男","age":"24"};
2    var b='{"name":"Mike","sex":"女","age":"29"}';

在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;

上面的转换可以这么写:
1    var a={"name":"tom","sex":"男","age":"24"};
2    var b='{"name":"Mike","sex":"女","age":"29"}';
3    var aToStr=JSON.stringify(a);
4    var bToObj=JSON.parse(b);
5    alert(typeof(aToStr));  //string
6    alert(typeof(bToObj));  //object
JSON.stringify()

ie8(兼容模式),ie7和ie6没有JSON对象,不过http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象:
1    var c='{"name":"Mike","sex":"女","age":"29"}';
2    var cToObj=eval("("+c+")");
3    alert(typeof(cToObj));

jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。

JSON.stringify(jsonobj),本来是最简便的方法,可是存在浏览器兼容问题(仅适用于IE8+,Chrome 1+,FF 3+)。下面再介绍一个方法:
01    var O2String = function (O) {
02        //return JSON.stringify(jsonobj);
03    
04        var S = [];
05        var J = "";
06        if (Object.prototype.toString.apply(O) === '[object Array]') {
07            for (var i = 0; i < O.length; i++)
08                S.push(O2String(O[i]));
09            J = '[' + S.join(',') + ']';
10        }
11        else if (Object.prototype.toString.apply(O) === '[object Date]') {
12            J = "new Date(" + O.getTime() + ")";
13        }
14        else if (Object.prototype.toString.apply(O) === '[object RegExp]' || Object.prototype.toString.apply(O) === '[object Function]') {
15            J = O.toString();
16        }
17        else if (Object.prototype.toString.apply(O) === '[object Object]') {
18            for (var i in O) {
19                O[i] = typeof (O[i]) == 'string' ? '"' + O[i] + '"' : (typeof (O[i]) === 'object' ? O2String(O[i]) : O[i]);
20                S.push(i + ':' + O[i]);
21            }
22            J = '{' + S.join(',') + '}';
23        }
24    
25        return J;
26    };

使用方法也很简单:
01    var jsonStr = O2String(
02        [
03            {
04                "Page": "plan",
05                "Custom":
06                [
07                    {
08                        "ItemName": "CustomLabel1",
09                        "ItemContent": 1,
10                        "IsItem": true,
11                        "ItemDate": new Date(1320774905467),
12                        "ItemReg": /[\w]*?/gi,
13                        "ItemFunc": function () { alert("ItemFunc"); }
14                    },
15                    {
16                        "ItemName": "CustomLabel1",
17                        "ItemContent": 1,
18                        "IsItem": true,
19                        "ItemDate": new Date(1320774905467),
20                        "ItemReg": /[\w]*?/gi,
21                        "ItemFunc": function () { alert("ItemFunc"); }
22                    }
23                ]
24            },
25            {
26                "Page": "project",
27                "Custom":
28                [
29                    {
30                        "ItemName": "CustomLabel2",
31                        "ItemContent": 2,
32                        "IsItem": false,
33                        "ItemDate": new Date(1320774905467),
34                        "ItemReg": /[\w]*?/gi,
35                        "ItemFunc": function () { alert("ItemFunc"); }
36                    },
37                    {
38                        "ItemName": "CustomLabel2",
39                        "ItemContent": 2,
40                        "IsItem": false,
41                        "ItemDate": new Date(1320774905467),
42                        "ItemReg": /[\w]*?/gi,
43                        "ItemFunc": function () { alert("ItemFunc"); }
44                    }
45                ]
46            }
47        ]
48    );
49    alert(jsonStr);
50    var jsonObj = eval("(" + jsonStr + ")");
51    alert(jsonObj.length);

   
目录
相关文章
|
1月前
|
JSON JavaScript 前端开发
|
1月前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
2月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
334 7
|
2月前
|
JSON JavaScript 前端开发
js如何格式化一个JSON对象?
js如何格式化一个JSON对象?
102 3
|
3月前
|
XML JSON JavaScript
JSON对象的stringify()和parse()方法使用
本文阐述了JSON对象的`stringify()`和`parse()`方法的用法,包括如何将JavaScript对象转换为JSON字符串,以及如何将JSON字符串解析回JavaScript对象,并讨论了转换过程中需要注意的事项。
JSON对象的stringify()和parse()方法使用
|
3月前
|
JSON 前端开发 中间件
React读取properties配置文件转化为json对象并使用在url地址中
本文介绍了如何在React项目中读取properties配置文件,将其内容转化为JSON对象,并在请求URL地址时使用这些配置。文章详细说明了异步读取文件、处理字符串转换为JSON对象的过程,并提供了一个封装函数,用于在发起请求前动态生成配置化的URL地址。
92 1
|
3月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
Web App开发 JSON JavaScript
第168天:json对象和字符串的相互转换
json对象和字符串的相互转换 1、json对象和字符串的转换 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。
1513 0
|
Web App开发 JSON 数据格式
JSON对象与字符串之间的相互转换 - CSDN博客
原文:JSON对象与字符串之间的相互转换 - CSDN博客 [html] view plain copy print?                  JSON对象与字符串之间的相互...
1661 0
|
Web App开发 JSON JavaScript
JSON对象和字符串之间的相互转换
原文:JSON对象和字符串之间的相互转换 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: view source print? 1 var a=...
858 0