Pridať novú atribút (element) do JSON objektu pomocou JavaScriptu
Ako pridám nový atribút (element) do JSON objektu pomocou JavaScriptu?
Odpoveď č. 1
JSON znamená JavaScript Object Notation. JSON objekt je v skutočnosti reťazec, ktorý ešte nebol prevedený na objekt, ktorý predstavuje.
Ak chcete pridať vlastnosť do existujúceho objektu v JS, môžete urobiť nasledovné.
object["property"] = value;
alebo
object.property = value;
Ak poskytnete niektoré dodatočné informácie, ako napríklad presne to, čo potrebujete urobiť v kontexte, môžete dostať viac prispôsobenú odpoveď.
Odpoveď č. 2
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);
Odpoveď č. 3
JSON objekt je jednoducho javascriptový objekt, takže keďže Javascript je jazyk založený na prototypoch, všetko, čo musíte urobiť, je adresovať ho pomocou bodkovej notácie.
mything.NewField = 'foo';
Odpoveď č. 4
S ECMAScript od roku 2015 môžete používať rozkladaciu syntax (…tri bodky):
let people = { id: 4 ,firstName: 'John'};
people = { ...people, secondName: 'Fogerty'};
Umožňuje vám pridávať podobjekty:
people = { ...people, city: { state: 'California' }};
výsledok by bol:
{
"id": 4,
"firstName": "John",
"secondName": "Forget",
"city": {
"state": "California"
}
}
Môžete tiež zlúčiť objekty:
var mergedObj = { ...obj1, ...obj2 };
Odpoveď č. 5
ďakujem za tento príspevok. Chcem pridať niečo, čo môže byť užitočné.
Pre IE je dobré použiť
object["property"] = value;
syntax, pretože niektoré špeciálne slová v IE vám môžu spôsobiť chybu.
Príklad:
object.class = 'value';
toto zlyháva v IE, pretože „class“ je špeciálne slovo. Strávil som s tým niekoľko hodín.
Odpoveď č. 6
Môžete tiež použiť Object.assign zo ECMAScript 2015. Umožňuje vám tiež pridať vnorené atribúty naraz. Napr.:
const myObject = {};
Object.assign(myObject, {
firstNewAttribute: {
nestedAttribute: 'woohoo!'
}
});
P.S.: Toto neprepíše existujúci objekt s priradenými atribútmi. Namiesto toho budú pridané. Ak však priradíte hodnotu existujúcemu atribútu, bude prepísaná.
