如何在javascript中将json格式的字符串转换为json数组

我使用$ .post()方法来检索json格式的字符串,如下所示:

{elementid:10},{elementid:11},{elementid:12},{elementid:14},{elementid:15} 

在$ .post()的成功回调函数中,我想循环这个json格式化字符串的值,但我无法弄清楚如何做到这一点。

  // data returns {elementid:10},{elementid:11},{elementid:12},{elementid:14}, etc. $.post('form.php', {'postvalues' : input_ids}, function(data){ var elements = Array(); elements = [data]; for(var i=0; i<elements.length; i++) { var value = elements[i]['elementid']; alert('value = '+value); } }); 

当我这样做,而不是在警告框中得到value = 10, value = 11, value = 12等,我得到value = undefined

我必须更改变量’data’的格式,以便将其解释为数组值而不是字符串?

谢谢你的帮助

如果您没有'['']'字符,则您的字符串无效JSON。

您可以添加它们,然后使用jQuery.parseJSON() [docs]方法解析它。

 elements = jQuery.parseJSON( '[' + data + ']' ); 

…但是如果从服务器发送正确的JSON数据会更好。

此外,您的JSON密钥必须用双引号括起来。

 {"elementid":10},{"elementid":11},{"elementid":12},{"elementid":14},{"elementid":15} 

您的查询未返回有效的JSON。 它应该是[{"elementid":10},{"elementid":11},{"elementid":12},{"elementid":14},{"elementid":15}]而不是{elementid:10},{elementid:11},{elementid:12},{elementid:14},{elementid:15} 。 有什么方法可以解决这个问题吗? 否则,您将不得不这样做:

 elements = jQuery.parseJSON("[" + data + "]"); 

但是,正确的做法是从服务器返回有效的JSON(如果您对此有任何控制权)。

使用JSON.parse(data)将包含JSON对象的字符串放入变量中

试试这个,看起来你正在传递一个数组(除了缺少的around []),如果你告诉jquery它是json它会正确解析它:

 $.post('form.php', {'postvalues' : input_ids}, function(data){ for(var i=0; i 

使用“for in”语句。 如:

 for (var x in data) { console.log(data[x]['elementid']); } 

我测试了它,它完美地工作了! 希望这可以帮助。

PS。 Console.log()在浏览器控制台中输出结果(当然,它在IE中不起作用)。