4.1. add
4.1. add
L'opération "add" effectue l'une des fonctions suivantes, selon ce que l'emplacement cible référence:
-
Si l'emplacement cible spécifie un index de tableau, une nouvelle valeur est insérée dans le tableau à l'index spécifié.
-
Si l'emplacement cible spécifie un membre d'objet qui n'existe pas encore, un nouveau membre est ajouté à l'objet.
-
Si l'emplacement cible spécifie un membre d'objet qui existe, la valeur de ce membre est remplacée.
L'objet d'opération DOIT contenir un membre "value" dont le contenu spécifie la valeur à ajouter.
Par exemple:
{ "op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ] }
Lorsque l'opération est appliquée, l'emplacement cible DOIT référencer l'un des éléments suivants:
-
La racine du document cible - auquel cas la valeur spécifiée devient le contenu entier du document cible.
-
Un membre à ajouter à un objet existant - auquel cas la valeur fournie est ajoutée à cet objet à l'emplacement indiqué. Si le membre existe déjà, il est remplacé par la valeur spécifiée.
-
Un élément à ajouter à un tableau existant - auquel cas la valeur fournie est ajoutée au tableau à l'emplacement indiqué. Tous les éléments à l'index spécifié ou au-dessus sont décalés d'une position vers la droite. L'index spécifié NE DOIT PAS être supérieur au nombre d'éléments dans le tableau. Si le caractère
"-"est utilisé pour indexer la fin du tableau (voir [RFC6901]), cela a pour effet d'ajouter la valeur au tableau.
Parce que cette opération est conçue pour ajouter à des objets et des tableaux existants, son emplacement cible n'existera souvent pas. Bien que l'algorithme de gestion des erreurs du pointeur soit ainsi invoqué, cette spécification définit le comportement de gestion des erreurs pour les pointeurs "add" pour ignorer cette erreur et ajouter la valeur comme spécifié.
Cependant, l'objet lui-même ou un tableau le contenant doit exister, et il reste une erreur si ce n'est pas le cas. Par exemple, un "add" avec un emplacement cible de "/a/b" commençant par ce document:
{ "a": { "foo": 1 } }
n'est pas une erreur, car "a" existe, et "b" sera ajouté à sa valeur. C'est une erreur dans ce document:
{ "q": { "bar": 2 } }
car "a" n'existe pas.