javascript - 在javascript中将字符串转换为对象数组的最佳方法?

标签 javascript jquery arrays literals string-literals

我想在 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);

解析后,您将获得一个具有属性 ab 的对象,正如您所知,您可以将对象视为哈希表或 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/

相关文章:

c++ - 推送数组 C++?

arrays - 如何在 Perl 中将相同大小的数组合并为一个数组?

javascript - 默认情况下取消静音嵌入式 Vine

javascript - 检测 DOM 元素的内联/ block 类型

javascript - 单击链接时使内容滑入和滑出?

javascript - 如何删除部分用户输入的值并将新值附加到输入框

jquery - 使用 jquery 循环的实时脚本

javascript - JQuery .sort() JavaScript 对象按属性值不起作用

javascript - 在具有多个对象的数组中应用数组过滤器时出错

javascript - 我想在最后一次选择 onchange 时提交表单 我有多个选择,选项是动态生成的