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á.

Súvisiace články