如果您不将 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 格式,但在您的示例中,这里有一些线索......
{
表示对象的开始。(请记住,您的整个 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.