2010-12-07 73 views
46

JSON对象的数组,我想这个字符串转换JSON字符串在Javascript

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

转换为2个JSON对象的数组。我应该怎么做?

最好

+2

如果你得到这个作为JSON字符串,那么它是无效的JSON无论如何...你从哪里得到它?你能发布一个更完整的代码示例吗? – 2010-12-07 10:22:51

回答

83

使用jQuery:

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

jsonObj是您的JSON对象。

+0

非常感谢 – Sobis 2010-12-07 12:02:56

+0

@Sobis您可能已经接受了答案... – 2011-04-11 12:15:34

5

追加额外的[]字符串的开头和结尾。这将使它成为一个数组。然后使用eval()或一些安全的JSON序列化程序对字符串进行序列化并使其成为真正的JavaScript数据类型。您应使用https://github.com/douglascrockford/JSON-js而不是eval()。 eval只有在你做一些快速调试/测试的时候。

4

如果您使用jQuery,它的功能可以使用parseJSON,并且优于JavaScript的原生eval()函数。

22

由于卢卡表明,添加额外的[]到您的字符串,并使用下面的代码:

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

,以测试它,你可以使用下面的代码片段。

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

希望它有助于..

+0

它适用于此解决方案 – Anup 2014-09-15 11:27:39

1

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

13

就这么简单。

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