我想在 JavaScript 中将下面的字符串转换为数组。
{a:12, b:c, foo:bar}
如何将此字符串转换为对象数组?有什么好主意吗?
最佳答案
我认为最好的方法是这样做,如 Douglas Crockford (JavaScript 最伟大的大师之一)suggests in here正在使用 JSON native parser ,因为它不仅比 eval() 更快,而且更安全。
native JSON 解析器已可用于:
- 火狐浏览器 3.5+
- IE 8+
- 歌剧 10.5+
- Safari Safari 4.0.3+
- Chrome(不知道哪个版本)
Crockford 在 JavaScript 中做了一个安全的后备方案,称为 json2.js ,这是 eval() 方法的改编,添加了一些安全位并使用 native JSON 解析器 API。您只需要包含该文件,删除其第一行,然后使用 native JSON 解析器,如果它不存在,则 json2 将完成这项工作。
这是一个例子:
var myJSONString = '{ "a": 1, "b": 2 }',
myObject = JSON.parse(myJSONString);
解析后,您将获得一个具有属性 a
和 b
的对象,正如您所知,您可以将对象视为哈希表或 associative array在 JavaScript 中,因此您可以访问如下值:
myObject['a'];
如果您只想要一个简单的数组而不是关联数组,您可以执行以下操作:
var myArray = [];
for(var i in myObject) {
myArray.push(myObject[i]);
}
最后,虽然在纯 JavaScript 中没有必要,但JSON spec需要双引号成员的键。所以如果没有它 navite 解析器将无法工作。如果我是你,我会添加它,但如果不可能,请使用 var myObject = eval( "("+ myString + ")");
方法。
关于javascript - 在javascript中将字符串转换为对象数组的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3473639/