【发布时间】:2014-09-15 21:10:48
【问题描述】:
我有一个这样的字符串:
string = '{ "key": [
{ "foo": "bar" }
] }';
这个字符串通过做转换成一个JSON对象
json = $.parseJSON(string);
然后它看起来像这样:
{ "key":
{ "0":
{ "foo": "bar" }
}
}
所以看起来数组被转换成哈希了。
期望的结果是:
{ "key": [
{ "foo": "bar" }
] }
实现这一目标的最佳方法是什么?背景:我将 JSON 数据发布到 URL,但需要数组保持完整,以便收件人可以相应地解析它。
更新
这是我在 Chrome 37.0.2062.120 和 jQuery 1.11.1 的控制台中看到的:
它看起来像一个数组,但实际上只是另一个键为“0”的散列。还是我搞错了?
更新 2
将字符串转换为 JSON 更新后,我将其发布到 url:
$.ajax({
url: 'http://test.com',
data: json,
dataType: 'jsonp',
type: 'post'
})
它到达的地方
{ "key":
{ "0":
{ "foo": "bar" }
}
}
【问题讨论】:
-
您的字符串不是有效的 Json。我得到“Uncaught SyntaxError: Unexpected token :”。如果您以
'{"key": [{ "foo": "bar" }]}'之类的有效 Json 字符串开头,您将得到预期的结果。 -
抱歉,这只是一个错字。更新了我的问题。
-
抱歉,我仍然可以重现该行为。当我解析那个字符串时,我得到了完全想要的输出。你确定这不仅仅是你如何显示结果的问题吗?
-
是的,你在哪里“看到”这个输出?
-
您的屏幕截图显示它确实是一个数组,您只是被按键弄糊涂了。尝试做
JSON.stringify($.parseJSON(string))请记住,Array 扩展了 Objects,因此它们看起来也像对象,并具有其他属性,例如长度、forEach、push...
标签: javascript jquery arrays json