在Javascript中将JSON字符串转换为JSON对象数组

Posted

技术标签:

【中文标题】在Javascript中将JSON字符串转换为JSON对象数组【英文标题】:Convert JSON string to array of JSON objects in Javascript 【发布时间】:2011-05-21 12:07:27 【问题描述】:

我想转换这个字符串

"id":1,"name":"Test1","id":2,"name":"Test2"

到 2 个 JSON 对象的数组。我该怎么做?

最好的

【问题讨论】:

如果你把它作为一个 JSON 字符串得到,那么它无论如何都不是有效的 JSON……你从哪里得到它?你能发布一个更完整的代码示例吗? 【参考方案1】:

使用 jQuery:

var str = '"id":1,"name":"Test1","id":2,"name":"Test2"';
var jsonObj = $.parseJSON('[' + str + ']');

jsonObj 是您的 JSON 对象。

【讨论】:

jQuery.parseJSON() 已被弃用。 @MarcL。应该用什么代替它? @Parapluie JSON.parse 多年来一直是“标准内置”对象的一部分。【参考方案2】:

就这么简单。

var str = '"id":1,"name":"Test1","id":2,"name":"Test2"';
 dataObj = JSON.parse(str);

【讨论】:

正如对原始问题的评论所述,给定的字符串不是有效的 JSON。【参考方案3】:

正如 Luca 所指出的,在您的字符串中添加额外的 [] 并使用以下代码:

var myObject = eval('(' + myJSONtext + ')');

要测试它,您可以使用下面的 sn-p。

var s =" ['id':1,'name':'Test1','id':2,'name':'Test2']";
var myObject = eval('(' + s + ')');
for (i in myObject)

   alert(myObject[i]["name"]);

希望对你有帮助..

【讨论】:

“eval is Evil: eval 函数是 javascript 中被滥用最多的特性。避免它” - Douglas Crockford 在“Javascript: The Good Parts” 评估中不推荐,因为它可能很危险。最好改用 JSON.parse()。 非常感谢,经过大量研究,我最终得到了 eval 函数!它将我的字符串 JSON 转换为实际的数组类型 JSON 数据【参考方案4】:

在字符串的开头和结尾追加一个[]。这将使它成为一个数组。然后使用eval() 或一些安全的 JSON 序列化器来序列化字符串并使其成为真正的 JavaScript 数据类型。

您应该使用https://github.com/douglascrockford/JSON-js 而不是eval()。 eval 仅在您进行一些快速调试/测试时使用。

【讨论】:

【参考方案5】:

如果你使用 jQuery,可以使用 parseJSON 函数,比 JavaScript 原生的 eval() 函数更可取。

【讨论】:

【参考方案6】:

我知道很多人都在说使用 eval。 eval() js 函数会调用编译器,这会带来一系列的安全风险。最好尽可能避免使用它。 parse 函数提供了一种更安全的选择。

【讨论】:

以上是关于在Javascript中将JSON字符串转换为JSON对象数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript:如何将JSON对象转换成JSON字符串呢

如何在 JavaScript 中将字符串转换为 JSON?

如何在 Rails 中将 Javascript 对象转换为 JSON?

当字符串在双引号内有单引号时,如何在Javascript中将此字符串转换为JSON对象

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

JS对象到JSON字符串? [复制]