它幫助,如果你不認爲JSON對象作爲JSON對象。一旦通過JSON.parse運行JSON字符串,它就是一個本地JavaScript對象。
在JavaScript中,有兩種訪問對象的方式。
點表示法
點符號是這樣
myObject.name
見點?你可以用它來訪問任何對象屬性(它確實可能是JavaScript中的另一個對象,只要它具有有效的點符號名稱)。您不能使用-
,.
等字符以及空格字符。
括號標記(可能是另一個名字)
myObject["variableName"]
像點符號,但允許其他一些字符,如-
和空格..沒有完全一樣的東西。
使用這些符號很有用,因爲我們可以訪問嵌套屬性。
myObj.foo.bar.baz()
現在讓我們到您的JSON對象...
{"items":[{"id":"BLE89-A0-123-384","weight":"100","quantity":3,"stock":0},
{"id":"BLE10-A0-123-321","weight":"100","quantity":4,"stock":0}],
你可能想在JSON format刷了自己,但在你的例子,這裏有幾個線索..
{
意味着一個對象的開始。 (請記住,您的整個JSON字符串本身就是一個對象。)
}
意味着對象的結束。
"variable"
(帶引號!在JSON中很重要,但不能在訪問/聲明JavaScript對象時使用)將屬性分配給對象。
:
是JSON和JavaScript對象中的賦值運算符。 :
右側的任何值都是您分配給左側屬性的值。
,
表示您正在對象內啓動一個新屬性。
您可能知道[]
與,
之間的逗號意味着一個數組。
當我們通過JSON.parse(string)
運行你的字符串,我們會得到一個對象,它看起來像這樣...
var myResponse = JSON.parse(response);
現在,您可以使用它作爲一個本地JavaScript對象。您要查找的是「項目」內的嵌套屬性。
var items = myResponse.items; //alternatively you could just use myResponse.items
由於items
是數組對象的,我們需要通過它以現有的對象轉換成一個新的對象進行迭代。
var i;
var result = {} ; //declare a new object.
for (i = 0; i < items.length; i++) {
var objectInResponse = items[i]; //get current object
var id = objectInResponse.id; //extract the id.
var quantity = objectInResponse.quantity;
result[id] = quantity; //use bracket notation to assign "BLE89-A0-123-384"
//instead of id. Bracket notation allows you to use the value
// of a variable for the property name.
結果現在是一個對象,它看起來像:
{
"BLE89-A0-123-384" : 3, //additional properties designated by comma
"BLE10-A0-123-321" : 4 // The last key/value in an object literal CANNOT
// have a comma after it!
}
您可以訪問使用括號標記的屬性。
var BLE89 = result["BLE10-A0-123-321"]; //use quotes, otherwise JavaScript will try to look up the value of a variable.
'{「BLE89-A0-123-384」,「3」; 「BLE10-A0-123-321」,「4」}'這甚至不是一個有效的對象,它必須是一個關鍵值對。 – 2012-04-28 22:41:31
對不起,修好了! – mrmo123 2012-04-28 22:43:45
什麼*不*你知道該怎麼辦?你知道如何訪問數組或對象的成員嗎?你知道如何迭代一個數組嗎?你知道如何創建一個對象,併爲其分配新的鍵/值對嗎?很高興知道你需要什麼幫助。 – 2012-04-28 22:56:48