Stringify JSON key of --json option result (#10046)
About RESP3 an ordered collection of key-value pairs, keys and value can be any other RESP3 type, but a key should be string in JSON spec.
This commit is contained in:
parent
65a7635793
commit
8deb9a4f1e
@ -1192,8 +1192,18 @@ static sds cliFormatReplyJson(sds out, redisReply *r) {
|
|||||||
case REDIS_REPLY_MAP:
|
case REDIS_REPLY_MAP:
|
||||||
out = sdscat(out,"{");
|
out = sdscat(out,"{");
|
||||||
for (i = 0; i < r->elements; i += 2) {
|
for (i = 0; i < r->elements; i += 2) {
|
||||||
out = cliFormatReplyJson(out, r->element[i]);
|
redisReply *key = r->element[i];
|
||||||
|
if (key->type == REDIS_REPLY_STATUS ||
|
||||||
|
key->type == REDIS_REPLY_STRING ||
|
||||||
|
key->type == REDIS_REPLY_VERB) {
|
||||||
|
out = cliFormatReplyJson(out, key);
|
||||||
|
} else {
|
||||||
|
/* According to JSON spec, JSON map keys must be strings, */
|
||||||
|
/* and in RESP3, they can be other types. */
|
||||||
|
sds tmp = cliFormatReplyJson(sdsempty(), key);
|
||||||
|
out = sdscatrepr(out,tmp,sdslen(tmp));
|
||||||
|
sdsfree(tmp);
|
||||||
|
}
|
||||||
out = sdscat(out,":");
|
out = sdscat(out,":");
|
||||||
|
|
||||||
out = cliFormatReplyJson(out, r->element[i+1]);
|
out = cliFormatReplyJson(out, r->element[i+1]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user