如何使用$ .parseJSON读取JSON

时间:2014-01-20 18:47:40

标签: javascript jquery json

感觉就像我发布了重复但我找不到满意的答案。 我有一个我已解析的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,谢谢你的帮助!

2 个答案:

答案 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",
  }
}