Passa al contenuto principale

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