我有这个example,我试图访问json值,但它甚至不会产生任何警报。有什么问题?
我的JSON
{
"response": [
{
"id": "0",
"elementName": "osname",
"isEqual": true,
"isPrasentinXml1": true,
"isPrasentinXml2": true,
"attribute": [
{
"name": "osname",
"firstValue": "Linux\u000a",
"secondValue": "SunOs\u000a"
}
]
},
{
"id": "1",
"elementName": "hostname",
"isEqual": false,
"isPrasentinXml1": true,
"isPrasentinXml2": true,
"attribute": [
{
"name": "hostname",
"firstValue": "estilo\u000a",
"secondValue": "buckeye.informatica.com\u000a"
}
]
}
]
}
我想要抓取Linux\u000a
和SunOs\u000a
,所以我写了
alert(compareData.response[0].attribute[0].firstValue+", "+compareData.response[0].attribute[0].secondValue);
注意:compareData
我的数据在实际代码中的位置
答案 0 :(得分:5)
您的错误是您的JSON周围有引号,它被视为字符串。您也忘记在第二个compareData
中将jsonobj
变量名替换为alert
。试试下面的小提琴,它似乎就是你想要的。
jsFiddle:http://jsfiddle.net/Dna9H/6/
修改强>
如果您的JSON真的由字符串表示,请查看 Michael Sagalovich 解决方案。
答案 1 :(得分:1)
答案 2 :(得分:0)
就我在小提琴中看到的那样,你的对象就是字符串。您需要先将其解析为对象。 compareData = JSON.parse(compareData)
可以提供帮助(我认为大多数浏览器都支持JSON.parse
)。 jQuery还有解析器:$.parseJSON(compareData)
。
答案 3 :(得分:0)
你的语法。这有效:
var jsonobj = {
"response": [
{
"id": "0",
"elementName": "osname",
"isEqual": true,
"isPrasentinXml1": true,
"isPrasentinXml2": true,
"attribute": [{
"name": "osname",
"firstValue": "Linux\u000a",
"secondValue": "Linux\u000a"}]
},
{
"id": "1",
"elementName": "hostname",
"isEqual": false,
"isPrasentinXml1": true,
"isPrasentinXml2": true,
"attribute": [{
"name": "hostname",
"firstValue": "estilo\u000a",
"secondValue": "buckeye.informatica.com\u000a"}]
}
]
};
alert(jsonobj.response[0].elementName);
alert(jsonobj.response[0].attribute[0].firstValue + ", " + jsonobj.response[0].attribute[0].secondValue);
我可以问你是否可以安装和学习如何使用Firebug或Chrome的开发控制台。这些工具可以让您的生活更加轻松。