感觉就像我发布了重复但我找不到满意的答案。 我有一个我已解析的JSON对象,它看起来像:
var jsonresp = $.parseJSON(response);
jsonresp =
{
"success": true,
"resource": {
"street": "the address",
"house_number": number,
"postcode": "postcode",
"town": "city",
}
}
现在,如果我是正确的,方括号意味着它是一个对象。但是大括号代表什么?
假设我想获得street的值,为什么jsonresp.resource.street
返回undefined?换句话说,大括号之间的资源内容是什么?我应该如何选择它们?
所以这是我使用的代码:
$.post(ajaxurl, postretrieve, function(response) {
var jsonresp = $.parseJSON(response);
console.log(jsonresp);
var jsonresp2 = {"success":true,"resource":{"street":"streetname","house_number":20,"postcode":"postcode","town":"city"}};
console.log(jsonresp2.resource.street);
}
我完全复制粘贴jsonresp中的内容并使其成为第二个变量jsonresp2。 jsonresp2.resource.street
返回正确的值,但jsonresp.resource.street
给出错误:未捕获的TypeError:无法读取未定义的属性“street”
我在这里做错了什么?
EDIT2: 我是json_encoding我的输出文件在php已经json_encoded,谢谢你的帮助!
答案 0 :(得分:1)
这是基本的javascript:{...}
(花括号)定义对象文字,[...]
(方括号)定义数组。如果你有
var myObj = {
someProperty: 'property value'
};
myObj.someProperty // evaluates to 'property value'
或
myObj['someProperty'] // evaluates to 'property value'
正如您对问题的评论中所提到的,如果jsonresp.resource.street
代码返回undefined,那么您的json结构并不是您认为的那样。
答案 1 :(得分:0)
在将数字加入引号后再次尝试jsonresp.resource.street
。
jsonresp =
{
"success": true,
"resource": {
"street": "the address",
"house_number": "number",
"postcode": "postcode",
"town": "city",
}
}