读书人

求这个字符串转成数组的步骤

发布时间: 2013-08-27 10:20:47 作者: rapoo

求这个字符串转成数组的方法
用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(/(?:^
------解决方案--------------------


:
[解决办法]
,)(?:\s*\[)+/g, '');

return (/^[\],:{}\s]*$/).test(string);
};

JSON.encode = JSON.stringify ? function(obj){
return JSON.stringify(obj);
} : function(obj){
if (obj && obj.toJSON) obj = obj.toJSON();

switch (typeOf(obj)){
case 'string':
return '"' + obj.replace(/[\x00-\x1f\\"]/g, escape) + '"';
case 'array':
return '[' + obj.map(JSON.encode).clean() + ']';
case 'object': case 'hash':
var string = [];
Object.each(obj, function(value, key){
var json = JSON.encode(value);
if (json) string.push(JSON.encode(key) + ':' + json);
});
return '{' + string + '}';
case 'number': case 'boolean': return '' + obj;
case 'null': return 'null';
}

return null;
};

JSON.decode = function(string, secure){
if (!string
[解决办法]
NWJ.type(string) != 'string') return null;

if (secure
[解决办法]
JSON.secure){
if (JSON.parse) return JSON.parse(string);
if (!JSON.validate(string)) throw new Error('JSON could not decode the input; security is enabled and the value is not secure.');
}

return eval('(' + string + ')');
};

读书人网 >JavaScript

热点推荐