日期:2014-05-16  浏览次数:20416 次

求这个字符串转成数组的方法
用AJAX调用某HTTP接口,返回值为一个这样的字符串:

[[0,1,3],[2,5,1],[1,3,2]]

我知道var a = [[0,1,3],[2,5,1],[1,3,2]];得到的是一个二维数组
但上面返回的是一个字符串,如果var a = returnString;那么a也是一个字符串,如何把a转换为一个数组?

我用split切割后再赋值给new Array是可以实现的,但是这感觉也太山寨了,有直接的方法吗?

------解决方案--------------------
str="[[0,1,3],[2,5,1],[1,3,2]]"
var a=eval(str);
------解决方案--------------------
json的起源就在于....
可以直接 var json = eval(str);

不过这个有安全隐患,可以动态执行str里的js,如果是自己的程序就无所谓了。要安全点的话可以先校验一下,清除里面的可执行代码。

最新的浏览器已经带有json解析和拼装功能了。


/*
---

name: JSON

description: JSON encoder and decoder.

Copy from mootools 1.4.5

license: MIT-style license.

SeeAlso: <http://www.json.org/>

requires: [Array, String, Number, Function]

provides: JSON

...
*/

if (typeof JSON == 'undefined') this.JSON = {};

var special = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'};

var escape = function(chr){
return special[chr] 
------解决方案--------------------
 '\\u' + ('0000' + chr.charCodeAt(0).toString(16)).slice(-4);
};

JSON.validate = function(string){
string = string.replace(/\\(?:["\\\/bfnrt]
------解决方案--------------------
u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"
------解决方案--------------------
true
------解决方案--------------------
false
------解决方案--------------------
null
------解决方案--------------------
-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^
------解决方案--------------------