Это помогает, если вы не думаете объектов JSON как объекты JSON. После запуска строки JSON через JSON.parse это собственный JavaScript-объект.
В JavaScript есть два способа доступа к объектам.
Dot Notation
Точка обозначения идет, как этот
myObject.name
См точку? Вы можете использовать это для доступа к любому объекту property (который действительно может быть другим объектом в javascript, если у него есть допустимое имя нотации точек). Вы не можете использовать символы, такие как -
, .
и символ пробела.
Кронштейн Notation (может быть другое название)
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»} 'Это даже не действительный объект, он должен быть ключевой парой значений. –
извините, исправлено! – mrmo123
Что * не * вы знаете, как это сделать? Вы знаете, как получить доступ к члену массива или объекта? Вы знаете, как перебирать массив? Вы знаете, как создать объект, и назначить ему новые пары ключ/значение? Было бы хорошо знать, с чем вам нужна помощь. –