如何在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中不起作用)。