Appendice A. Esempi (Appendix A. Examples)
A.1. Aggiunta di un membro dell'oggetto (Adding an Object Member)
Esempio di documento JSON di destinazione:
{ "foo": "bar"}
Documento JSON Patch:
[
{ "op": "add", "path": "/baz", "value": "qux" }
]
Documento JSON risultante:
{
"baz": "qux",
"foo": "bar"
}
A.2. Aggiunta di un elemento dell'array (Adding an Array Element)
Esempio di documento JSON di destinazione:
{ "foo": [ "bar", "baz" ] }
Documento JSON Patch:
[
{ "op": "add", "path": "/foo/1", "value": "qux" }
]
Documento JSON risultante:
{ "foo": [ "bar", "qux", "baz" ] }
A.3. Rimozione di un membro dell'oggetto (Removing an Object Member)
Esempio di documento JSON di destinazione:
{
"baz": "qux",
"foo": "bar"
}
Documento JSON Patch:
[
{ "op": "remove", "path": "/baz" }
]
Documento JSON risultante:
{ "foo": "bar" }
A.4. Rimozione di un elemento dell'array (Removing an Array Element)
Esempio di documento JSON di destinazione:
{ "foo": [ "bar", "qux", "baz" ] }
Documento JSON Patch:
[
{ "op": "remove", "path": "/foo/1" }
]
Documento JSON risultante:
{ "foo": [ "bar", "baz" ] }
A.5. Sostituzione di un valore (Replacing a Value)
Esempio di documento JSON di destinazione:
{
"baz": "qux",
"foo": "bar"
}
Documento JSON Patch:
[
{ "op": "replace", "path": "/baz", "value": "boo" }
]
Documento JSON risultante:
{
"baz": "boo",
"foo": "bar"
}
A.6. Spostamento di un valore (Moving a Value)
Esempio di documento JSON di destinazione:
{
"foo": {
"bar": "baz",
"waldo": "fred"
},
"qux": {
"corge": "grault"
}
}
Documento JSON Patch:
[
{ "op": "move", "from": "/foo/waldo", "path": "/qux/thud" }
]
Documento JSON risultante:
{
"foo": {
"bar": "baz"
},
"qux": {
"corge": "grault",
"thud": "fred"
}
}
A.7. Spostamento di un elemento dell'array (Moving an Array Element)
Esempio di documento JSON di destinazione:
{ "foo": [ "all", "grass", "cows", "eat" ] }
Documento JSON Patch:
[
{ "op": "move", "from": "/foo/1", "path": "/foo/3" }
]
Documento JSON risultante:
{ "foo": [ "all", "cows", "eat", "grass" ] }
A.8. Test di un valore: Successo (Testing a Value: Success)
Esempio di documento JSON di destinazione:
{
"baz": "qux",
"foo": [ "a", 2, "c" ]
}
Documento JSON Patch che porterà a una valutazione riuscita:
[
{ "op": "test", "path": "/baz", "value": "qux" },
{ "op": "test", "path": "/foo/1", "value": 2 }
]
A.9. Test di un valore: Errore (Testing a Value: Error)
Esempio di documento JSON di destinazione:
{ "baz": "qux" }
Documento JSON Patch che porterà a una condizione di errore:
[
{ "op": "test", "path": "/baz", "value": "bar" }
]
A.10. Aggiunta di un oggetto membro nidificato (Adding a Nested Member Object)
Esempio di documento JSON di destinazione:
{ "foo": "bar" }
Documento JSON Patch:
[
{ "op": "add", "path": "/child", "value": { "grandchild": { } } }
]
Documento JSON risultante:
{
"foo": "bar",
"child": {
"grandchild": {
}
}
}
A.11. Ignorare elementi non riconosciuti (Ignoring Unrecognized Elements)
Esempio di documento JSON di destinazione:
{ "foo": "bar" }
Documento JSON Patch:
[
{ "op": "add", "path": "/baz", "value": "qux", "xyz": 123 }
]
Documento JSON risultante:
{
"foo": "bar",
"baz": "qux"
}
A.12. Aggiunta a un target inesistente (Adding to a Nonexistent Target)
Esempio di documento JSON di destinazione:
{ "foo": "bar" }
Documento JSON Patch:
[
{ "op": "add", "path": "/baz/bat", "value": "qux" }
]
Questo documento JSON Patch, applicato al documento JSON di destinazione sopra, porterebbe a un errore (pertanto non verrebbe applicato), perché la posizione di destinazione dell'operazione "add" non fa riferimento né alla radice del documento, né a un membro di un oggetto esistente, né a un membro di un array esistente.
A.13. Documento JSON Patch non valido (Invalid JSON Patch Document)
Documento JSON Patch:
[
{ "op": "add", "path": "/baz", "value": "qux", "op": "remove" }
]
Questo documento JSON Patch non può essere trattato come un'operazione "add", perché contiene un elemento "op":"remove" successivo. JSON richiede che i nomi dei membri dell'oggetto siano univoci con un requisito "SHOULD", e non esiste una gestione degli errori standard per i duplicati.
A.14. Ordine di escape ~ (~ Escape Ordering)
Esempio di documento JSON di destinazione:
{
"/": 9,
"~1": 10
}
Documento JSON Patch:
[
{"op": "test", "path": "/~01", "value": 10}
]
Documento JSON risultante:
{
"/": 9,
"~1": 10
}
A.15. Confronto di stringhe e numeri (Comparing Strings and Numbers)
Esempio di documento JSON di destinazione:
{
"/": 9,
"~1": 10
}
Documento JSON Patch:
[
{"op": "test", "path": "/~01", "value": "10"}
]
Questo risulta in un errore, perché il test fallisce. Il valore del documento è numerico, mentre il valore testato è una stringa.
A.16. Aggiunta di un valore array (Adding an Array Value)
Esempio di documento JSON di destinazione:
{ "foo": ["bar"] }
Documento JSON Patch:
[
{ "op": "add", "path": "/foo/-", "value": ["abc", "def"] }
]
Documento JSON risultante:
{ "foo": ["bar", ["abc", "def"]] }