JSON.RESP

用法
JSON.RESP key [ path ]
复杂性
O(N),其中 N 是路径匹配到的 JSON 值的数量。
模块
valkey-json
自模块版本
1.0.0
ACL 类别
@read, @fast, @json

以 Redis 序列化协议(RESP)格式返回给定路径上的 JSON 值。如果该值为容器类型,响应将是 RESP 数组或嵌套数组。

  • JSON null 映射到 RESP Null Bulk String。
  • JSON 布尔值映射到相应的 RESP Simple Strings。
  • 整数映射到 RESP Integers。
  • 浮点数映射到 RESP Bulk Strings。
  • JSON 字符串映射到 RESP Bulk Strings。
  • JSON 数组表示为 RESP 数组,其中第一个元素是简单字符串 [,后跟数组的元素。
  • JSON 对象表示为 RESP 数组,其中第一个元素是简单字符串 {,后跟键值对,每个键值对都是一个 RESP bulk string。

示例

增强路径语法

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) "212 555-1234"
   3) 1) {
      2) 1) "type"
         2) "office"
      3) 1) "number"
         2) "646 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) "646 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) "646 555-4567"
 9) 1) "children"
    2) 1) [
10) 1) "spouse"
    2) (nil)

RESP2 回复

  • 如果路径是增强语法

    • 数组回复:数组的数组,每个内部数组代表给定路径上值的 RESP 形式。

    • 数组回复:如果文档键不存在,则为空数组。

  • 如果路径是受限语法

RESP3 回复

  • 如果路径是增强语法

    • 数组回复:数组的数组,每个内部数组代表给定路径上值的 RESP 形式。

    • 数组回复:如果文档键不存在,则为空数组。

  • 如果路径是受限语法