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

将后台程序(如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 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 };

使用方法也很简单:

view source

print?

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);
时间: 2024-10-05 12:14:22

JSON对象转字符串的一些方法的相关文章

JSON对象和字符串之间的相互转换

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

JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)

在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSON转为字符串.JSON.parse(string)将字符串转为JSON格式: var a={"name":"tom","sex":"男","age":"24"}; var aToStr =

json对象与字符串的相互转换,数组和字符串的转换

1.json对象转换为字符串 JSON.stringify(value [, replacer] [, space])  var student = new Object(); student.id = "001"; student.name = "程陈"; student.age = "18"; var str = JSON.stringify(student); //{"id":"001","

解析JSON对象与字符串之间的相互转换

在开发的过程中,如果对于少量参数的前后台传递,可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,这样后台 接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递. 例如:前台按类的格式传递JSON对象: var jsonUserInfo = "{\"TUserName\":\"" + userName + "\",\"TInterest\&qu

json对象转为字符串,当做参数传递时加密解密

[son对象  字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男","age":"24"}; var b='{"name":"Mike","sex":"女","age":"29"

JSON对象与字符串之间的相互转换 - CSDN博客

原文:JSON对象与字符串之间的相互转换 - CSDN博客 [html] view plain copy print? <html> <head> <meta name="viewport" content="width=device-width" /> <title>JSON对象与字符串之间的相互转换</title> <script src="~/Js/jquery-1.8.0.js&qu

第168天:json对象和字符串的相互转换

json对象和字符串的相互转换 1.json对象和字符串的转换 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法.JSON.stringify(obj)       将JSON对象转为字符串.JSON.parse(string)       将字符串转为JSON对象格式. 1 //使用json中的parser方法转换: 2 3 var str='{"name":"fendou

json对象与字符串转换

//使用json中的parser方法转换: var str='{"name":"fendouer", "age":23}'; //这是一个json字符串'' var ob=JSON.parse(str) ; //返回一个新对象 console.log(ob.name) //把json中的stringify对象转换成字符串 var obj={"student":[{"name":"cyl"

JSON对象和字符串之间的相互转换 – JSON.parse() 和 JSON.stringify()

所有现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容: JSON.parse(string) :接受一个 JSON 字符串并将其转换成一个 JavaScript 对象. JSON.stringify(obj) :接受一个 JavaScript 对象并将其转换为一个 JSON 字符串. 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. 比如我有两个变量,我要将a