Guide for migrating from RESP2 to RESP3 replies
JSON RESP2 to RESP3 replies reference for client developers
In RESP3, the default value of the optional path argument was changed from . to $. Due to this change, the replies of some commands have slightly changed. This page provides a brief comparison between RESP2 and RESP3 responses for JSON commands to help developers in migrating their clients from RESP2 to RESP3.
JSON command replies comparison
The types are described using a "TypeScript-like" syntax. Array<a> denotes an array where the type of elements is known, but the number of elements is not.
Command
RESP2
RESP3
All JSON commands
Default value of optional path argument: .
Default value of optional path argument: $
JSON.ARRAPPEND
JSON.ARRINDEX
JSON.ARRINSERT
JSON.ARRLEN
JSON.ARRTRIM
JSON.OBJLEN
JSON.STRAPPEND
JSON.STRLEN
JSON.TOGGLE
$-based path argument:
Reply: Array<BulkString | null>
.-based path argument :
Reply: BulkString
$-based path argument:
Reply: Array<number | null>
.-based path argument :
Reply: number
JSON.GET
Reply: JSON encoded string
Example:
> JSON.SET k $ "[1,2,3]"
> JSON.GET k
"[1,2,3]"
Reply: JSON encoded string with a top-level array
Example:
> JSON.SET k $ "[1,2,3]"
> JSON.GET k
"[[1,2,3]]"
JSON.NUMINCRBY
JSON.NUMMULTBY
$-based path argument:
Reply: JSON-encoded BulkString | null
.-based path argument :
Reply: BulkString | null | error
$-based path argument:
Reply: Array<number | null> | error
.-based path argument :
Reply: number | null | error
JSON.OBJKEYS
$-based path argument:
Reply: Array<Array<BulkString>>
.-based path argument :
Reply: Array<BulkString>
$-based path argument:
Reply: Array<Array<BulkString>>
.-based path argument :
Reply: Array<BulkString>
JSON.TYPE
$-based path argument:
Reply: Array<BulkString>
Example:
> JSON.TYPE k $
1) "array"
.-based path argument :
Reply: BulkString
$-based path argument:
Reply: Array<Array<BulkString>>
Example:
> JSON.TYPE k $
1) 1) "array"
.-based path argument :
Reply: Array<BulkString>