我似乎无法访问我的对象。
解析服务器字符串后:
var json = JSON.parse(myJsonText):
我收到以下警告:
alert(json.param1)
{"ID":17,"Name":"swimming pools","ParentID":4,"Path":""},
{"ID":64,"Name":"driveways","ParentID":4,"Path":""}
现在,我正在尝试访问ID和名称。
我试过了:
json.param1[0].ID
json.param1[0]["ID"]
json.param1[0][0]
还有很多其他人并没有做太多贡献 感觉如:
json[0].ID or
json.param1.ID etc...
我得到了(例如,在json.param1 [0] .ID的情况下):
param1.0.ID为null或不是对象。
有什么想法吗?
答案 0 :(得分:2)
看起来像无效的JSON。尝试将其包装在括号中,使其成为有效的JSON对象数组。然后通过索引访问它。
[
{"ID":17,"Name":"swimming pools","ParentID":4,"Path":""},
{"ID":64,"Name":"driveways","ParentID":4,"Path":""}
]
答案 1 :(得分:2)
如果您在警报中收到原始JSON,那么这会让我相信您尝试解析的JSON存在问题。
答案 2 :(得分:2)
试试这个
// you already have this bit
var json = JSON.parse(myJsonText);
alert(json.param1);
// add this
var tmp_param1 = JSON.parse(json.param1);
json.param1 = tmp_param1;
alert(json.param1); // should print [object, object] or similar
alert(json.param1[0].ID); // should print "17"
alert(json.param1[0].Name); // should print "swimming pools"
答案 3 :(得分:1)
编译并扩展所有评论......;)
你的第一个线索是你的警告出了问题:
alert(json.param1)
而不是得到:
{"ID":17,"Name":"swimming pools","ParentID":4,"Path":""},
{"ID":64,"Name":"driveways","ParentID":4,"Path":""}
你应该得到类似于以下内容的东西:
[object],[object]
尝试提醒typeof
数组元素本身:
alert(typeof json.param1[0]) //=> should say "object"
如果你得到除"object"
以外的任何内容,则JSON格式不正确或解析器失败。
关于哪个错误的一个好的线索是原始JSON是这样的:
{"param1" : [
"{\"ID\":17,\"Name\":\"swimming pools\",\"ParentID\":4,\"Path\":\"\"}",
"{\"ID\":64,\"Name\":\"driveways\",\"ParentID\":4,\"Path\":\"\"}"
]}
然后,可能是JSON破了。 (抱歉;)
另一方面,如果您的JSON看起来像这样:
{"param1" : [
{"ID":17,"Name":"swimming pools","ParentID":4,"Path":""},
{"ID":64,"Name":"driveways","ParentID":4,"Path":""}
]}
然后,它可能是解析器。
答案 4 :(得分:0)
如果您说的是json.param1
,则json.param1[0].ID
应该有效(并评估为“17”)。
如果它不起作用,您能否向我们展示您正在解析的文本以生成JSON对象?