2014-01-20 72 views
-1

感覺就像我發佈了一個副本,但我無法找到滿意的答案。如果我是正確的方括號意味着它是一個對象

var jsonresp = $.parseJSON(response); 

jsonresp = 
{ 
    "success": true, 
    "resource": { 
    "street": "the address", 
    "house_number": number, 
    "postcode": "postcode", 
    "town": "city", 
    } 
} 

現在: 我已經得到了我解析的JSON對象,它看起來像。但是大括號代表什麼?

比方說,我想獲得街道的價值,爲什麼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:無法讀取未定義的屬性「街道」

我在這裏做錯了什麼?

EDIT2: 我是json_encoding我的輸出文件在PHP已經是json_encoded,感謝您的幫助!

+0

Felix給出了其中一個答案,讓我找到它。 –

+2

'現在,如果我是正確的,方括號表示它是一個不正確的對象。方括號是一個數組。不過,你的'jsonresp.resource.street'應該給了你價值。 http://jsfiddle.net/6fYag/ –

+0

'jsonresp.resource.street'應該適用於該對象(注意我必須將'number'更改爲某個定義的內容):http://jsfiddle.net/5Sbw3/ –

回答

1

這是基本的javascript:a {...}(花括號)定義了一個對象字面值和一個[...](方括號)定義了一個數組。如果你有

var myObj = { 
    someProperty: 'property value' 
}; 

myObj.someProperty // evaluates to 'property value'

myObj['someProperty'] // evaluates to 'property value'

在你的意見,你的問題中提到,如果jsonresp.resource.street代碼返回未定義的,那麼你的JSON結構是不是有什麼你認爲是。

0

將數字放在引號後再次嘗試jsonresp.resource.street

jsonresp = 
{ 
    "success": true, 
    "resource": { 
    "street": "the address", 
    "house_number": "number", 
    "postcode": "postcode", 
    "town": "city", 
    } 
}