544 votes

Ajouter un nouvel attribut (élément) à un objet JSON en utilisant JavaScript

Comment ajouter un nouvel attribut (élément) à un objet JSON en utilisant JavaScript ?

723voto

Quintin Robinson Points 41988

JSON signifie JavaScript Object Notation. Un objet JSON est en réalité une chaîne de caractères qui n'a pas encore été transformée en l'objet qu'elle représente.

Pour ajouter une propriété à un objet existant en JS, vous pourriez faire ce qui suit.

object["property"] = value;

ou

object.property = value;

Si vous fournissez des informations supplémentaires comme exactement ce que vous devez faire dans le contexte, vous pourriez obtenir une réponse plus adaptée.

0 votes

Est-ce possible alors : object["propriété"]["sous-propriété"]... ce serait formidable. J'ai juste essayé. var a.s = "quoi"; a.s.d = "non"; C'est indéfini :(

6 votes

@shanehoban ici a est JSON, a.s tel que vous venez de le définir est une chaîne de caractères. Maintenant, vous essayez d'ajouter ["sous-propriété"] à une chaîne de caractères. Comprenez-vous maintenant pourquoi vous avez obtenu l'erreur?

2 votes

Pour les débutants, souvenez-vous que, comme le dit Quintin, un "objet" JSON n'est en réalité pas un objet, c'est juste une chaîne de caractères. Vous devriez le convertir en un véritable objet JavaScript avec JSON.parse() avant d'utiliser son exemple de object["property"] = value;

213voto

Cody Points 1198
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);

8 votes

Juste ce que je cherchais, ajouter un élément lorsque le nom doit être construit de manière programmable

5 votes

Excellent exemple .Cela m'aide.

169voto

FlySwat Points 61945

Un objet JSON est simplement un objet javascript, donc avec Javascript étant un langage basé sur le prototype, tout ce que vous avez à faire est de l'adresser en utilisant la notation point.

mything.NewField = 'foo';

0 votes

C'est ça, j'adore le prototype de JavaScript!

80voto

leo Points 231

Merci pour ce post. Je veux ajouter quelque chose qui peut être utile.

Pour IE, il est bon d'utiliser

object["property"] = value;

parce que certains mots spéciaux dans IE peuvent vous donner une erreur.

Un exemple:

object.class = 'value';

cela échoue dans IE, car "class" est un mot spécial. J'ai passé plusieurs heures avec ça.

0 votes

@Sunil Garg Comment stockeriez-vous cette valeur en tant qu'enfant d'un parent dans l'objet d'origine?

-4voto

user3131507 Points 11
pour (var i = 0; i < JsonObject.length; i++) {
                    alert("à l'intérieur de la boucle for");
                    var dataArray = JsonObject[i];
                    alert(dataArray["data"]);

            }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X