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);

   
目录
相关文章
|
25天前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
4天前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
140 64
|
13天前
|
存储 JSON JavaScript
|
19天前
|
JSON Java 数据格式
Java系列之:生成JSON字符串
这篇文章介绍了两种在Java中生成JSON字符串的方法:使用`JSONObject`类及其`toJSONString`方法来动态生成,以及手动拼接字符串的方式来创建JSON格式的字符串。
Java系列之:生成JSON字符串
|
11天前
|
JSON Go 数据格式
Go实现json字符串与各类struct相互转换
文章通过Go语言示例代码详细演示了如何实现JSON字符串与各类struct之间的相互转换,包括结构体对象生成JSON字符串和JSON字符串映射到struct对象的过程。
11 0
|
2月前
|
存储 JSON Java
Java对象转换为JSON字符串
在Java开发中,常需将数据对象转换为JSON存储,如使用Fastjson库。要将Java对象转为JSON,可调用`JSON.toJSONString(obj)`;反向转换则用`JSON.parseObject(str, Class)`。
|
JSON API 数据格式
4. JSON字符串是如何被解析的?JsonParser了解一下(下)
4. JSON字符串是如何被解析的?JsonParser了解一下(下)
|
4月前
|
SQL JSON 监控
实时计算 Flink版产品使用合集之直接将 JSON 字符串解析为数组的内置函数如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
JSON JavaScript 前端开发
4. JSON字符串是如何被解析的?JsonParser了解一下(中)
4. JSON字符串是如何被解析的?JsonParser了解一下(中)
4. JSON字符串是如何被解析的?JsonParser了解一下(中)
|
JSON Java fastjson

热门文章

最新文章