Tengo una respuesta de API donde JSON no está en una matriz, algo como a continuación
{
"TV": {
"USD": 9677.25,
"EUR": 7768.87,
"JPY": 1072773.87,
"GBP": 6898.93,
"AUD": 12294.15,
"CAD": 12056.19
},
"Lamp": {
"USD": 231.35,
"EUR": 185.89,
"JPY": 25735.85,
"GBP": 168.82,
"AUD": 296.7,
"CAD": 283
}
}
Si es una matriz, puedo usar la función .map
, pero en este escenario, ¿cómo puedo mostrar los datos mientras los hago en bucle, ya que los datos provenientes de la API pueden ser diferentes en cada llamada?
El formato deseado que estoy buscando es
[{
"PRODUCT": "TV",
"PRICE": {
"USD": 9677.25,
"EUR": 7768.87,
"JPY": 1072773.87,
"GBP": 6898.93,
"AUD": 12294.15,
"CAD": 12056.19
}
}, {
"PRODUCT": "Lamp",
"PRICE": {
"USD": 231.35,
"EUR": 185.89,
"JPY": 25735.85,
"GBP": 168.82,
"AUD": 296.7,
"CAD": 283
}
}]
Por favor, ayúdeme.
2 respuestas
Puede usar Object.keys()
para iterar a través de cada clave de sus datos y luego, usando array#map
, puede crear una matriz resultante con sus objetos.
var data = { "TV": { "USD": 9677.25, "EUR": 7768.87, "JPY": 1072773.87, "GBP": 6898.93, "AUD": 12294.15, "CAD": 12056.19 }, "Lamp": { "USD": 231.35, "EUR": 185.89, "JPY": 25735.85, "GBP": 168.82, "AUD": 296.7, "CAD": 283 } },
result = Object.keys(data).map(k => ({PRODUCT: k, PRICE: data[k]}));
console.log(result);
Puede recuperar las claves de las propiedades de nivel superior del objeto JSON.
var payload = {
"TV": {
"USD": 9677.25,
"EUR": 7768.87,
"JPY": 1072773.87,
"GBP": 6898.93,
"AUD": 12294.15,
"CAD": 12056.19
},
"Lamp": {
"USD": 231.35,
"EUR": 185.89,
"JPY": 25735.85,
"GBP": 168.82,
"AUD": 296.7,
"CAD": 283
}
}
var keys = Object.keys(payload)
Ahora puede mapear estas claves y usarlas para hacer referencia a la carga útil. Entonces, por ejemplo, si quisiera crear una matriz con el costo en USD de cada artículo.
var usdCost = keys.map(function (key) {
return {
item: key,
usd: payload[key].USD
}
})
// [{
// item: "TV",
// usd: 9677.25
// }, {
// item: "Lamp",
// usd: 231.35
// }]
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.