JSON stringify tablica obiektów z właściwością
Próbowałem zdefiniować tablicę obiektów z dodatkowymi właściwościami.
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 : Dlaczego właściwość „extra” nie jest ograniczona? Jak mogę zachować brakującą właściwość w JSON.stringify ()?
Odpowiedzi
Ponieważ datato nie tylko obiekt - to tablica. A gdy tablice są poddawane ciągom json, wszystkie właściwości nieliczbowe są usuwane z wyniku (ponieważ i tak nie ma sposobu, aby przedstawić je w [...]notacji).
Jeśli nadal chcesz widzieć tę właściwość w formacie JSON, musisz użyć zwykłych obiektów. Możesz ugryźć punktor i po prostu „zobiektywizować” oryginalną tablicę za pomocą { ... }cukru:
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"]}"
... ale uważaj, wszystkie te rekwizyty „0”, „1” będą widoczne w Twoim JSON bez zmian, a to nie jest najlepszy widok. Zwykle czystsze jest użycie dodatkowej właściwości:
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"]}"
Możesz umieścić dodatkowe: [...] wewnątrz {} wgich zrobi w obiekcie. Następnie możesz go uszlachetnić.
twój json to Array, ale umieszczasz do nich jeden klucz
jeśli chcesz używać go ze słowem kluczowym, powinieneś użyć:
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"}]
{...} służy do definiowania pojedynczego obiektu, a drugi [...] jest tablicą i służy do definiowania sekwencji obiektów, wartości lub list ...
obiekty są zdefiniowane jako takie {klucz: obiekt lub lista lub wartość, ...} lista nie jest niczym więcej niż sekwencją obiektów lub list lub wartości, [obiekty lub lista lub wartości, ...] ...
spróbuj użyć pojedynczego obiektu, a nie tablicy.