Tout d'abord, votre code cité est pas JSON. Votre code est en notation littérale d'objet JavaScript. JSON est un sous-ensemble de celui-ci, conçu pour faciliter l'analyse syntaxique.
Votre code définit un objet ( data
) contenant un tableau ( items
) d'objets (chacun avec un id
, name
et type
).
Vous n'avez pas besoin ou envie de jQuery pour cela, juste de JavaScript.
Ajout d'un élément :
data.items.push(
{id: "7", name: "Douglas Adams", type: "comedy"}
);
Cela ajoute à la fin. Voir ci-dessous pour l'ajout au milieu.
Suppression d'un élément :
Il y a plusieurs façons de procéder. Le site splice
est la méthode la plus polyvalente :
data.items.splice(1, 3); // Removes three items starting with the 2nd,
// ("Witches of Eastwick", "X-Men", "Ordinary People")
splice
modifie le tableau original, et retourne un tableau des éléments que vous avez supprimés.
En ajoutant au milieu :
splice
fait à la fois l'ajout et le retrait. La signature de la splice
la méthode est :
removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]);
-
index
- l'indice auquel il faut commencer à faire des changements
-
num_to_remove
- en commençant par cet index, supprimer ce nombre d'entrées
-
addN
- ...et ensuite insérer ces éléments
Je peux donc ajouter un élément en 3ème position comme ceci :
data.items.splice(2, 0,
{id: "7", name: "Douglas Adams", type: "comedy"}
);
Ce qui veut dire : En partant de l'indice 2, on enlève zéro élément, puis on insère cet élément suivant. Le résultat ressemble à ceci :
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "2", name: "Witches of Eastwick", type: "comedy"},
{id: "7", name: "Douglas Adams", type: "comedy"}, // <== The new item
{id: "3", name: "X-Men", type: "action"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
Vous pouvez en enlever et en ajouter en même temps :
data.items.splice(1, 3,
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"}
);
...ce qui signifie : En partant de l'indice 1, on enlève trois entrées, puis on ajoute ces deux entrées. Ce qui donne :
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
2 votes
Ce n'est pas JSON. C'est un objet littéral : benalman.com/news/2010/03/theres-no-such-thing-as-a-json ( et la croisade contre les objets JSON continue.... )
4 votes
@Matt : En effet. Eh bien, JSON est un format de données textuelles. Et le code cité ne serait pas JSON même s'il était dans une chaîne (car JSON exige des guillemets doubles sur les noms de propriétés).
6 votes
Merci de m'avoir éclairé. Cela ressemble pourtant bien à un objet JSON ! Merci encore !
3 votes
@Bug : notation JSON pour
{items: []}
ressemblerait à ceci :{"items": []}
. Ce n'est pas tout à fait la même chose (juste très similaire ; encore une fois, JSON est un sous-ensemble de ce que vous utilisez, qui est la notation littérale d'objet). Lorsque vous désérialiser JSON, le résultat est un graphe d'objets (par exemple, en JavaScript, c'est un objet JavaScript).