Aller au contenu principal

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