Annexe A. Exemples
A.1. Ajout d'un membre d'objet
Exemple de document JSON cible:
{ "foo": "bar"}
Document JSON Patch:
[
{ "op": "add", "path": "/baz", "value": "qux" }
]
Document JSON résultant:
{
"baz": "qux",
"foo": "bar"
}
A.2. Ajout d'un élément de tableau
Exemple de document JSON cible:
{ "foo": [ "bar", "baz" ] }
Document JSON Patch:
[
{ "op": "add", "path": "/foo/1", "value": "qux" }
]
Document JSON résultant:
{ "foo": [ "bar", "qux", "baz" ] }
A.3. Suppression d'un membre d'objet
Exemple de document JSON cible:
{
"baz": "qux",
"foo": "bar"
}
Document JSON Patch:
[
{ "op": "remove", "path": "/baz" }
]
Document JSON résultant:
{ "foo": "bar" }
A.4. Suppression d'un élément de tableau
Exemple de document JSON cible:
{ "foo": [ "bar", "qux", "baz" ] }
Document JSON Patch:
[
{ "op": "remove", "path": "/foo/1" }
]
Document JSON résultant:
{ "foo": [ "bar", "baz" ] }
A.5. Remplacement d'une valeur
Exemple de document JSON cible:
{
"baz": "qux",
"foo": "bar"
}
Document JSON Patch:
[
{ "op": "replace", "path": "/baz", "value": "boo" }
]
Document JSON résultant:
{
"baz": "boo",
"foo": "bar"
}
A.6. Déplacement d'une valeur
Exemple de document JSON cible:
{
"foo": {
"bar": "baz",
"waldo": "fred"
},
"qux": {
"corge": "grault"
}
}
Document JSON Patch:
[
{ "op": "move", "from": "/foo/waldo", "path": "/qux/thud" }
]
Document JSON résultant:
{
"foo": {
"bar": "baz"
},
"qux": {
"corge": "grault",
"thud": "fred"
}
}
A.7. Déplacement d'un élément de tableau
Exemple de document JSON cible:
{ "foo": [ "all", "grass", "cows", "eat" ] }
Document JSON Patch:
[
{ "op": "move", "from": "/foo/1", "path": "/foo/3" }
]
Document JSON résultant:
{ "foo": [ "all", "cows", "eat", "grass" ] }
A.8. Test d'une valeur: Succès
Exemple de document JSON cible:
{
"baz": "qux",
"foo": [ "a", 2, "c" ]
}
Document JSON Patch qui entraînera une évaluation réussie:
[
{ "op": "test", "path": "/baz", "value": "qux" },
{ "op": "test", "path": "/foo/1", "value": 2 }
]
A.9. Test d'une valeur: Erreur
Exemple de document JSON cible:
{ "baz": "qux" }
Document JSON Patch qui entraînera une condition d'erreur:
[
{ "op": "test", "path": "/baz", "value": "bar" }
]
A.10. Ajout d'un objet membre imbriqué
Exemple de document JSON cible:
{ "foo": "bar" }
Document JSON Patch:
[
{ "op": "add", "path": "/child", "value": { "grandchild": { } } }
]
Document JSON résultant:
{
"foo": "bar",
"child": {
"grandchild": {
}
}
}
A.11. Ignorer les éléments non reconnus
Exemple de document JSON cible:
{ "foo": "bar" }
Document JSON Patch:
[
{ "op": "add", "path": "/baz", "value": "qux", "xyz": 123 }
]
Document JSON résultant:
{
"foo": "bar",
"baz": "qux"
}
A.12. Ajout à une cible inexistante
Exemple de document JSON cible:
{ "foo": "bar" }
Document JSON Patch:
[
{ "op": "add", "path": "/baz/bat", "value": "qux" }
]
Ce document JSON Patch, appliqué au document JSON cible ci-dessus, entraînerait une erreur (par conséquent, il ne serait pas appliqué), car l'emplacement cible de l'opération "add" ne référence ni la racine du document, ni un membre d'un objet existant, ni un membre d'un tableau existant.
A.13. Document JSON Patch invalide
Document JSON Patch:
[
{ "op": "add", "path": "/baz", "value": "qux", "op": "remove" }
]
Ce document JSON Patch ne peut pas être traité comme une opération "add", car il contient un élément "op":"remove" ultérieur. JSON exige que les noms de membres d'objet soient uniques avec une exigence "SHOULD", et il n'y a pas de gestion d'erreur standard pour les doublons.
A.14. Ordre d'échappement ~
Exemple de document JSON cible:
{
"/": 9,
"~1": 10
}
Document JSON Patch:
[
{"op": "test", "path": "/~01", "value": 10}
]
Document JSON résultant:
{
"/": 9,
"~1": 10
}
A.15. Comparaison de chaînes et de nombres
Exemple de document JSON cible:
{
"/": 9,
"~1": 10
}
Document JSON Patch:
[
{"op": "test", "path": "/~01", "value": "10"}
]
Cela entraîne une erreur, car le test échoue. La valeur du document est numérique, alors que la valeur testée est une chaîne.
A.16. Ajout d'une valeur de tableau
Exemple de document JSON cible:
{ "foo": ["bar"] }
Document JSON Patch:
[
{ "op": "add", "path": "/foo/-", "value": ["abc", "def"] }
]
Document JSON résultant:
{ "foo": ["bar", ["abc", "def"]] }