JSON stringify matriz de objetos con propiedad
Estaba tratando de secuenciar una matriz de objetos con propiedades adicionales.
var data = [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}];
data.extra = ["a", "b"];
console.log(data)
// [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}, extra: ["a", "b"]]
console.log(JSON.stringify(data));
//[{foo: "1", bar: "2"}, {foo: "2", bar:"3"}]
P : ¿Por qué la propiedad "extra" no está codificada? ¿Cómo puedo conservar la propiedad que falta en JSON.stringify ()?
Respuestas
Porque datano es solo un objeto, es una matriz. Y cuando las matrices están json-stringificadas, todas las propiedades no numéricas se descartan del resultado (ya que de [...]todos modos no hay forma de representarlas en notación).
Si aún desea ver esa propiedad en JSON, debe usar Objetos simples. Puede morder la bala y simplemente "objetivar simplemente" la matriz original con { ... }azúcar:
const data = [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}];
data.extra = ["a", "b"];
JSON.stringify( {...data} );
// "{"0":{"foo":"1","bar":"2"},"1":{"foo":"2","bar":"3"},"extra":["a","b"]}"
... pero cuidado, todos esos accesorios "0", "1" se verán dentro de su JSON tal cual, y esa no es la mejor vista. Por lo general, es más limpio usar una propiedad adicional:
const data = [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}];
const extra = ["a", "b"];
const output = {
data,
extra
};
JSON.stringify(output);
// "{"data":[{"foo":"1","bar":"2"},{"foo":"2","bar":"3"}],"extra":["a","b"]}"
Puede poner el extra: [...] dentro de {} que hará en objeto. Entonces puedes encadenarlo.
tu json es Array pero les pones una clave
si desea usarlo con una palabra clave, debe usar:
var data = [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}];
data.push(["a", "b"]) ;
console.log(data)
// [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}, extra: ["a", "b"]]
console.log(JSON.stringify(data));
//[{foo: "1", bar: "2"}, {foo: "2", bar:"3"}]
{...} se usa para definir un solo objeto, mientras que el otro [...] es una matriz y se usa para definir una secuencia de objetos, valores o listas ...
los objetos se definen como {clave: objeto o lista o valor, ...} la lista no es más que una secuencia de objetos o listas o valores, [objetos o lista o valores, ...] ...
intente usar un solo objeto y no una matriz.