

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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(선택 사항) - 경로가 루트이면, Redis 키가 있는 경우에만 값을 설정합니다(예: 기존 문서 대체). 경로가 루트가 아니면 경로가 있는 경우에만 값을 설정합니다.

**반환**
+ 성공 시 단순 문자열 '확인'.
+ 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
```