

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# JSON.SET
<a name="json-set"></a>

Imposta i valori JSON nel percorso.

Se il percorso richiede un membro oggetto:
+ Se l'elemento principale non esiste, il comando restituirà l'errore NONEXISTENT.
+ Se l'elemento principale esiste ma non è un oggetto, il comando restituirà ERROR.
+ Se l'elemento padre esiste ed è un oggetto:
  +  Se il membro non esiste, un nuovo membro verrà accodato all'oggetto padre se e solo se l'oggetto padre è l'ultimo figlio nel percorso. In caso contrario, il comando restituirà un errore INESISTENTE.
  +  Se il membro esiste, il suo valore verrà sostituito dal valore JSON.

Se il percorso richiede un indice di array:
+ Se l'elemento principale non esiste, il comando restituirà un errore INESISTENTE.
+ Se l'elemento principale esiste ma non è un array, il comando restituirà ERROR.
+ Se l'elemento principale esiste ma l'indice non è compreso nei limiti, il comando restituirà l'errore OUTOFBOUNDARIES.
+ Se l'elemento padre esiste e l'indice è valido, l'elemento verrà sostituito dal nuovo valore JSON.

Se il percorso richiede un oggetto o un array, il valore (oggetto o array) verrà sostituito dal nuovo valore JSON.

Sintassi

```
JSON.SET <key> <path> <json> [NX | XX] 
```

[NX \$1 XX] Dove è possibile avere 0 o 1 degli identificatori [NX \$1 XX]
+ chiave (obbligatoria) — chiave del tipo di documento JSON
+ path (obbligatorio) — percorso JSON. Per una nuova chiave, il percorso JSON deve essere la radice «.».
+ NX (opzionale): se il percorso è la radice, imposta il valore solo se la chiave non esiste, ad esempio inserisci un nuovo documento. Se il percorso non è la radice, imposta il valore solo se il percorso non esiste, ad esempio inserisci un valore nel documento.
+ XX (opzionale) — Se il percorso è la radice, imposta il valore solo se la chiave esiste, ad esempio sostituisci il documento esistente. Se il percorso non è la radice, imposta il valore solo se il percorso esiste, ad esempio aggiorna il valore esistente.

**Valori restituiti**
+ Stringa semplice 'OK' se l’esito è positivo.
+ Null se la condizione NX o XX non viene soddisfatta.

**Esempi**

 Sintassi avanzata del percorso:

```
127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":1, "b":2, "c":3}}'
OK
127.0.0.1:6379> JSON.SET k1 $.a.* '0'
OK
127.0.0.1:6379> JSON.GET k1
"{\"a\":{\"a\":0,\"b\":0,\"c\":0}}"

127.0.0.1:6379> JSON.SET k2 . '{"a": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.SET k2 $.a[*] '0'
OK
127.0.0.1:6379> JSON.GET k2
"{\"a\":[0,0,0,0,0]}"
```

 Sintassi limitata del percorso:

```
127.0.0.1:6379> JSON.SET k1 . '{"c":{"a":1, "b":2}, "e": [1,2,3,4,5]}'
OK
127.0.0.1:6379> JSON.SET k1 .c.a '0'
OK
127.0.0.1:6379> JSON.GET k1
"{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,5]}"
127.0.0.1:6379> JSON.SET k1 .e[-1] '0'
OK
127.0.0.1:6379> JSON.GET k1
"{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,0]}"
127.0.0.1:6379> JSON.SET k1 .e[5] '0'
(error) OUTOFBOUNDARIES Array index is out of bounds
```