

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# JSON.RESP
<a name="json-resp"></a>

返回 Valkey 或 Redis OSS 序列化协议（RESP）中给定路径的 JSON 值。如果值为容器，则响应为 RESP 数组或嵌套数组。
+ JSON 空值映射到 RESP Null 批量字符串。
+ JSON 布尔值映射到相应的 RESP 简单字符串。
+ 整数被映射到 RESP 整数。
+ 64 位 IEEE 双浮点数映射到 RESP 批量字符串。
+ JSON 字符串被映射到 RESP 批量字符串。
+ JSON 数组表示为 RESP 数组，其中第一个元素是简单字符串 [，然后是数组的元素。
+ JSON 对象表示为 RESP 数组，其中第一个元素是简单字符串 \$1，然后是键值对，每个键值对都是 RESP 批量字符串。

语法

```
JSON.RESP <key> [path]
```
+ key（必需）– JSON 文档类型的键
+ path（可选）– 一个 JSON 路径。如果未提供，则默认为根目录

**Return**

如果路径是增强的语法：
+ 数组的数组。每个数组元素都代表一个路径上值的 RESP 形式。
+ 如果文档键不存在，则为空数组。

如果路径是受限的语法：
+ 表示路径中值的 RESP 形式的数组。
+ 如果文档键不存在，则为 Null。

**示例**

增强的路径语法：

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK

127.0.0.1:6379> JSON.RESP k1 $.address
1) 1) {
   2) 1) "street"
      2) "21 2nd Street"
   3) 1) "city"
      2) "New York"
   4) 1) "state"
      2) "NY"
   5) 1) "zipcode"
      2) "10021-3100"

127.0.0.1:6379> JSON.RESP k1 $.address.*
1) "21 2nd Street"
2) "New York"
3) "NY"
4) "10021-3100"

127.0.0.1:6379> JSON.RESP k1 $.phoneNumbers
1) 1) [
   2) 1) {
      2) 1) "type"
         2) "home"
      3) 1) "number"
         2) "555 555-1234"
   3) 1) {
      2) 1) "type"
         2) "office"
      3) 1) "number"
         2) "555 555-4567"

127.0.0.1:6379> JSON.RESP k1 $.phoneNumbers[*]
1) 1) {
   2) 1) "type"
      2) "home"
   3) 1) "number"
      2) "212 555-1234"
2) 1) {
   2) 1) "type"
      2) "office"
   3) 1) "number"
      2) "555 555-4567"
```

受限的路径语法：

```
127.0.0.1:6379> JSON.SET k1 . '{"firstName":"John","lastName":"Smith","age":27,"weight":135.25,"isAlive":true,"address":{"street":"21 2nd Street","city":"New York","state":"NY","zipcode":"10021-3100"},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"office","number":"646 555-4567"}],"children":[],"spouse":null}'
OK

127.0.0.1:6379> JSON.RESP k1 .address
1) {
2) 1) "street"
   2) "21 2nd Street"
3) 1) "city"
   2) "New York"
4) 1) "state"
   2) "NY"
5) 1) "zipcode"
   2) "10021-3100"

127.0.0.1:6379> JSON.RESP k1
 1) {
 2) 1) "firstName"
    2) "John"
 3) 1) "lastName"
    2) "Smith"
 4) 1) "age"
    2) (integer) 27
 5) 1) "weight"
    2) "135.25"
 6) 1) "isAlive"
    2) true
 7) 1) "address"
    2) 1) {
       2) 1) "street"
          2) "21 2nd Street"
       3) 1) "city"
          2) "New York"
       4) 1) "state"
          2) "NY"
       5) 1) "zipcode"
          2) "10021-3100"
 8) 1) "phoneNumbers"
    2) 1) [
       2) 1) {
          2) 1) "type"
             2) "home"
          3) 1) "number"
             2) "212 555-1234"
       3) 1) {
          2) 1) "type"
             2) "office"
          3) 1) "number"
             2) "555 555-4567"
 9) 1) "children"
    2) 1) [
10) 1) "spouse"
    2) (nil)
```