我遇到了一个问题,我似乎无法查询我的JSON回来,我可以打印出整个回复,这是我的JSON响应,我只能在我做msgBox()
时看到这个提示:
{ "Addresses" :
"[{
Building=Megatron Skyscraper,
BuldingId=1998,
AccountId=2000,
Number=007,
Name=Megatron
},{
Building=StarScream Skyscraper,
BuldingId=1999,
AccountId=2001,
Number=008,
Name=StarScream
}]"}
这是我的代码:
function getReadyStateHandler(req)
{
// Return an anonymous function that listens to the
// XMLHttpRequest instance
return function ()
{
// If the request's status is "complete"
if (req.readyState == 4)
{
// Check that a successful server response was received
if (req.status == 200)
{
msgBox("JSON Response recieved...");
var addresses = req.responseText.toJSON();
msgBox(req.responseText.toJSON());
}
else
{
// An HTTP problem has occurred
alert("HTTP error: " + req.status);
}
}
}
}
我已尝试过addresses.Address[0].City
和addressess.Addresses[0].City
等许多其他内容 - 但这有点令人困惑!
答案 0 :(得分:3)
除了响应中没有City
键之外,返回的对象只包含一个(格式错误的)字符串,而不是一个对象数组。您可以使用http://jsonlint.com
您是如何创建回复的?它看起来应该更像:
{ "Addresses" : [{
"Building":"Megatron Skyscraper",
"BuldingId":1998,
"AccountId":2000,
"Number":7,
"Name":"Megatron"
},{
"Building":"StarScream Skyscraper",
"BuldingId":1999,
"AccountId":2001,
"Number":8,
"Name":"StarScream"
}]}
更新: "Number":007
和"Number":008
中的前导零可能会导致问题,因为它们会被解释为八进制值。我在答案中删除了它们。
答案 1 :(得分:0)
您的回复有效,但地址是字符串而不是数组。如果它被视为数组,那么引号不应该存在。如果你愿意,你可以稍微破解它
address = JSON.parse(addresses.Addresses);