154 votes

Ajouter un nouvel élément de tableau à un objet JSON

J'ai un objet au format JSON que j'ai lu à partir d'un fichier JSON que j'ai dans une variable appelée teamJSON, qui ressemble à ceci :

{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}

Je veux ajouter un nouvel élément au tableau, tel que

{"teamId":"4","status":"pending"}

pour arriver à

{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}

avant d'écrire de nouveau dans le fichier. Quel est un bon moyen d'ajouter le nouvel élément ? J'ai presque réussi mais tous les guillemets étaient échappés. J'ai cherché une bonne réponse sur SO mais aucune ne couvre tout à fait ce cas. Toute aide est appréciée.

296voto

Paul S. Points 20115

JSON est juste une notation; pour apporter les modifications que vous souhaitez parse le afin d'appliquer les changements à un objet JavaScript natif, puis stringify à nouveau en JSON

var jsonStr = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';

var obj = JSON.parse(jsonStr);
obj['theTeam'].push({"teamId":"4","status":"pending"});
jsonStr = JSON.stringify(obj);
// "{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}"

28voto

Ajay Gupta Points 1282
var Str_txt = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';

Si vous souhaitez ajouter à la dernière position, utilisez ceci :

var parse_obj = JSON.parse(Str_txt);
parse_obj['theTeam'].push({"teamId":"4","status":"pending"});
Str_txt = JSON.stringify(parse_obj);
Output //"{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}"

Si vous souhaitez ajouter à la première position, utilisez le code suivant :

var parse_obj = JSON.parse(Str_txt);
parse_obj['theTeam'].unshift({"teamId":"4","status":"pending"});
Str_txt = JSON.stringify(parse_obj);
Output //"{"theTeam":[{"teamId":"4","status":"pending"},{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}"

Toute personne souhaitant ajouter à une certaine position d'un tableau, essayez ceci :

parse_obj['theTeam'].splice(2, 0, {"teamId":"4","status":"pending"});
Output //"{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"4","status":"pending"},{"teamId":"3","status":"member"}]}"

Le bloc de code ci-dessus ajoute un élément après le deuxième élément.

2voto

Abhijit Points 130

Enfin, nous devons analyser l'objet JSON puis nous pouvons ajouter un élément.

var str = '{"theTeam":[{"teamId":"1","status":"pending"},
{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';

var obj = JSON.parse(str);
obj['theTeam'].push({"teamId":"4","status":"pending"});
str = JSON.stringify(obj);

Enfin, nous JSON.stringify l'objet obj de nouveau en JSON

2voto

Ajit A. Kenjale Points 19

Dans mon cas, mon objet JSON ne contenait aucun tableau existant, j'ai donc dû d'abord créer un élément de tableau et ensuite pousser l'élément.

  elementToPush = [1, 2, 3]
  if (!obj.arr) this.$set(obj, "arr", [])
  obj.arr.push(elementToPush)  

(Cette réponse peut ne pas être pertinente pour cette question en particulier, mais peut aider quelqu'un d'autre)

1voto

user3336921 Points 11

Utilisez l'opérateur de propagation

    array1 = [ 
    {
                "column": "Level",
                "valueOperator": "=",
                "value": "Organization"
            } 
    ];

array2 = [
{
                "column": "Level",
                "valueOperator": "=",
                "value": "Division"
            } 
            ];
    array3 = [
    {
                "column": "Level",
                "operator": "=",
                "value": "Country"
            }
            ];
            console.log(array1.push(...array2,...array3));

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