我想转换此字符串
{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}
到2个JSON对象的数组。我该怎么办?
最好的
答案 0 :(得分:87)
使用jQuery:
var str = '{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}';
var jsonObj = $.parseJSON('[' + str + ']');
jsonObj
是您的JSON对象。
答案 1 :(得分:25)
正如Luca所说,在你的字符串中添加额外的[]
并使用以下代码:
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"]);
}
希望它有所帮助..
答案 2 :(得分:20)
就这么简单。
var str = '{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}';
dataObj = JSON.parse(str);
答案 3 :(得分:6)
在字符串的开头和结尾附加额外的[
和]
。这将使它成为一个数组。然后使用eval()
或一些安全的JSON序列化程序来序列化字符串并使其成为真正的JavaScript数据类型。
您应该使用https://github.com/douglascrockford/JSON-js代替eval()
。只有在你进行一些快速调试/测试时才会进行评估。
答案 4 :(得分:4)
如果你使用jQuery,它可以使用parseJSON函数,并且比JavaScript的原生eval()
函数更可取。
答案 5 :(得分:1)
我知道很多人都在说使用eval。 eval()js函数将调用编译器,这可能会带来一系列安全风险。最好尽可能避免使用它。解析功能提供了更安全的替代方案。