将 Redis 数据转换为 Lua 中的 json 格式

我有一个 Redis 数据,它的格式是 Json 的字符串。我正在使用 Nodejs 的 redis.eval 函数来评估 Lua 脚本

"{\"hotelId\":100001,\"modifiedAt\":123123112,\"Code\":\"MERC/ENG\",\"available\":true}"

Redis 以这种形式将数据传递给 Lua,我尝试使用 string.gsub() 方法去除引号,但无法去除转义字符 \,仍然具有字符串类型,无法在循环中实现 object[i].hotelId。同时,我也尝试过 cjson.decode() 和 encode,但都不起作用,或者我只是没有成功。您有什么想法吗?

谢谢

点赞
用户7132014
用户7132014

你可以使用简单的 JSON.parse() 方法将这个字符串转换为 JSON 对象, 希望这能帮助到你。

2018-06-28 11:15:01
用户3160475
用户3160475

这里需要查看您的脚本,但无论如何,以下是一个例子,希望对您有所帮助:

$ redis-cli
127.0.0.1:6379> SET foo "{\"hotelId\":100001,\"modifiedAt\":123123112,\"Code\":\"MERC/ENG\",\"available\":true}"
OK
127.0.0.1:6379> GET foo
"{\"hotelId\":100001,\"modifiedAt\":123123112,\"Code\":\"MERC/ENG\",\"available\":true}"
127.0.0.1:6379> EVAL "local json = redis.call('GET', KEYS[1]) local obj = cjson.decode(json) return obj['hotelId']" 1 foo
(integer) 100001
2018-06-28 12:42:31