Sirve de ayuda si usted no piensa de objetos JSON como objetos JSON. Una vez que ejecuta una cadena JSON a través de JSON.parse, es un objeto JavaScript nativo.
En JavaScript, hay dos formas de acceder a los objetos.
Dot notación
La notación de puntos es la siguiente
myObject.name
ver el punto? Puede usar eso para acceder a cualquier propiedad del objeto (que de hecho puede ser otro objeto en javascript, siempre que tenga un nombre de notación de punto válido). No puede usar caracteres como -
, .
y el carácter de espacio.
soporte de notación (puede ser otro nombre)
myObject["variableName"]
Al igual que la notación de puntos pero permite algunos otros personajes, como -
y el carácter de espacio .. Es exactamente lo mismo.
Usar estas notaciones es útil porque podemos acceder a propiedades anidadas.
myObj.foo.bar.baz()
Ahora vamos a llegar a su objeto JSON ...
{"items":[{"id":"BLE89-A0-123-384","weight":"100","quantity":3,"stock":0},
{"id":"BLE10-A0-123-321","weight":"100","quantity":4,"stock":0}],
Es posible que desee poner al día la JSON format mismo, pero en su ejemplo, he aquí algunas pistas ..
{
Significa el inicio de un objeto. (Tenga en cuenta que toda la cadena JSON es un objeto en sí).
}
Significa el final de un objeto.
"variable"
(con comillas! Importante en JSON, pero no al acceder/declarar objetos javascript) le asigna una propiedad a su objeto.
:
Es el operador de asignación en los objetos JSON y JavaScript. Cualquier cosa a la derecha del :
es el valor que está asignando a la propiedad de la izquierda.
,
Significa que está iniciando una nueva propiedad dentro de un objeto.
Probablemente sepa que []
con ,
comas dentro significa una matriz.
Cuando se corre la cadena a través JSON.parse(string)
, conseguiremos un objeto que se parece a esto ...
var myResponse = JSON.parse(response);
Ahora puede utilizar como un objeto JavaScript nativo. Lo que estás buscando es una propiedad anidada dentro de "artículos".
var items = myResponse.items; //alternatively you could just use myResponse.items
Desde items
es una matriz de objetos , tendremos que iterar a través de él con el fin de convertir el objeto existente en un nuevo objeto.
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.
El resultado es ahora un objeto que se parece a:
{
"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!
}
Puede acceder a las propiedades utilizando notación de corchetes.
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"} 'Eso ni siquiera es un objeto válido, necesita ser un par de valores clave. –
lo siento, lo arreglé! – mrmo123
¿Qué * no * sabes cómo hacer? ¿Sabes cómo acceder a un miembro de una matriz u objeto? ¿Sabes cómo iterar una matriz? ¿Sabes cómo crear un objeto y asignarle nuevos pares clave/valor? Sería bueno saber exactamente con qué necesita ayuda. –