Antworten:
JSON steht für JavaScript Object Notation. Ein JSON-Objekt ist wirklich eine Zeichenfolge, die noch nicht in das Objekt umgewandelt wurde, das es darstellt.
Um einem vorhandenen Objekt in JS eine Eigenschaft hinzuzufügen, haben Sie folgende Möglichkeiten.
object["property"] = value;
oder
object.property = value;
Wenn Sie zusätzliche Informationen bereitstellen, z. B. genau das, was Sie im Kontext tun müssen, erhalten Sie möglicherweise eine individuellere Antwort.
object["property"] = value;
JSON.stringify
.
console.log
es nicht für die Serialisierung vorgesehen ist. Verwenden Sie console.log(JSON. stringify(object))
.
var jsonObj = {
members:
{
host: "hostName",
viewers:
{
user1: "value1",
user2: "value2",
user3: "value3"
}
}
}
var i;
for(i=4; i<=8; i++){
var newUser = "user" + i;
var newValue = "value" + i;
jsonObj.members.viewers[newUser] = newValue ;
}
console.log(jsonObj);
danke für diesen Beitrag. Ich möchte etwas hinzufügen, das nützlich sein kann.
Für IE ist es gut zu verwenden
object["property"] = value;
Syntax, da einige spezielle Wörter im IE einen Fehler verursachen können.
Ein Beispiel:
object.class = 'value';
Dies schlägt im IE fehl, da " Klasse " ein spezielles Wort ist. Ich habe mehrere Stunden damit verbracht.
Mit ECMAScript seit 2015 können Sie die Spread-Syntax verwenden (… drei Punkte):
let people = { id: 4 ,firstName: 'John'};
people = { ...people, secondName: 'Fogerty'};
Hier können Sie Unterobjekte hinzufügen:
people = { ...people, city: { state: 'California' }};
das Ergebnis wäre:
{
"id": 4,
"firstName": "John",
"secondName": "Forget",
"city": {
"state": "California"
}
}
Sie können auch Objekte zusammenführen:
var mergedObj = { ...obj1, ...obj2 };
Sie können auch Object.assign
von verwenden ECMAScript 2015
. Außerdem können Sie verschachtelte Attribute gleichzeitig hinzufügen. Z.B:
const myObject = {};
Object.assign(myObject, {
firstNewAttribute: {
nestedAttribute: 'woohoo!'
}
});
Ps: Dadurch wird das vorhandene Objekt mit den zugewiesenen Attributen nicht überschrieben. Stattdessen werden sie hinzugefügt. Wenn Sie jedoch einem vorhandenen Attribut einen Wert zuweisen, wird dieser überschrieben.
extend: function(){
if(arguments.length === 0){ return; }
var x = arguments.length === 1 ? this : arguments[0];
var y;
for(var i = 1, len = arguments.length; i < len; i++) {
y = arguments[i];
for(var key in y){
if(!(y[key] instanceof Function)){
x[key] = y[key];
}
}
};
return x;
}
Erweitert mehrere JSON-Objekte (ignoriert Funktionen):
extend({obj: 'hej'}, {obj2: 'helo'}, {obj3: {objinside: 'yes'}});
Wird zu einem einzelnen JSON-Objekt führen
Sie können Ihrem JSON auch neue JSON-Objekte hinzufügen, indem Sie die Erweiterungsfunktion verwenden.
var newJson = $.extend({}, {my:"json"}, {other:"json"});
// result -> {my: "json", other: "json"}
Eine sehr gute Option für die Erweiterungsfunktion ist die rekursive Zusammenführung. Fügen Sie einfach den wahren Wert als ersten Parameter hinzu (weitere Optionen finden Sie in der Dokumentation). Beispiel,
var newJson = $.extend(true, {}, {
my:"json",
nestedJson: {a1:1, a2:2}
}, {
other:"json",
nestedJson: {b1:1, b2:2}
});
// result -> {my: "json", other: "json", nestedJson: {a1:1, a2:2, b1:1, b2:2}}
Sie können Attribute mit Variablen auch dynamisch direkt in einem Objektliteral hinzufügen.
const amountAttribute = 'amount';
const foo = {
[amountAttribute]: 1
};
foo[amountAttribute + "__more"] = 2;
Ergebnisse in:
{
amount: 1,
amount__more: 2
}
Verwendung $.extend()
von jquery wie folgt :
token = {_token:window.Laravel.csrfToken};
data = {v1:'asdass',v2:'sdfsdf'}
dat = $.extend(token,data);
Ich hoffe du dienst ihnen.
a
ist JSON,a.s
wie gerade von Ihnen definiert, ist eine Zeichenfolge. Jetzt versuchen Sie["subproperty"]
, eine Zeichenfolge hinzuzufügen . Verstehst du jetzt, warum du den Fehler bekommen hast?