Aller au contenu principal

Annexe A. Exemples (Appendix A. Examples)

A.1. Ajout d'un membre d'objet (Adding an Object Member)

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 (Adding an Array Element)

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 (Removing an Object Member)

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 (Removing an Array Element)

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 (Replacing a Value)

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 (Moving a Value)

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 (Moving an Array Element)

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 (Testing a Value: Success)

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 (Testing a Value: Error)

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é (Adding a Nested Member Object)

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 (Ignoring Unrecognized Elements)

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 (Adding to a Nonexistent Target)

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 (Invalid JSON Patch Document)

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 ~ (~ Escape Ordering)

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 (Comparing Strings and Numbers)

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 (Adding an Array Value)

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"]] }