

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

パスに JSON 値を設定します。

パスがオブジェクトメンバーを要求する場合:
+ 親要素が存在しない場合、このコマンドは NONEXISTENT エラーを返します。
+ 親要素は存在するがオブジェクトではない場合、このコマンドは ERROR を返します。
+ 親要素が存在し、オブジェクトである場合:
  +  メンバーが存在しない場合、親オブジェクトがパスの最後の子である場合にのみ、新しいメンバーが親オブジェクトに追加されます。それ以外の場合、このコマンドは NONEXISTENT エラーを返します。
  +  メンバーが存在する場合、その値は JSON 値に置き換えられます。

パスが配列インデックスを要求する場合:
+ 親要素が存在しない場合、このコマンドは NONEXISTENT エラーを返します。
+ 親要素は存在するが配列ではない場合、このコマンドは ERROR を返します。
+ 親要素は存在するが、インデックスが範囲外である場合、このコマンドは OUTOFBOUNDARIES エラーを返します。
+ 親要素が存在し、インデックスが有効な場合、要素は新しい JSON 値に置き換えられます。

パスがオブジェクトまたは配列を要求する場合、値 (オブジェクトまたは配列) は新しい JSON 値に置き換えられます。

構文

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

NX \$1 XX ここで、NX \$1 XX の識別子を 0 個または 1 個持つことができます
+ キー (必須) - JSON ドキュメントタイプのキー
+ パス (必須) - JSON パス。新しいキーの場合、JSON パスはルート「.」でなければなりません。
+ NX (オプション) - パスがルートである場合は、キーが存在しない場合にのみ値を設定します。つまり、新しいドキュメントを挿入します。パスがルートではない場合は、パスが存在しない場合にのみ値を設定します。つまり、ドキュメントに値を挿入します。
+ XX (オプション) - パスがルートの場合は、キーが存在する場合にのみ値を設定します。つまり、既存のドキュメントを置き換えます。パスがルートではない場合は、パスが存在する場合にのみ値を設定します。つまり、既存の値を更新します。

**戻る**
+ 成功した場合は、シンプルな文字列「OK」が返されます。
+ NX または XX 条件が満たされない場合は、null が返されます。

**例**

 拡張パス構文:

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

 制限パス構文:

```
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
```