我正试图从nodejs在Redis实例中运行一个lua脚本。我在缓存中设置了一个json对象{one:1, two:'2', three: {four: 4}}
,然后在lua中运行以下脚本:
local value = redis.call('get', 'myKey')
local obj = cjson.decode(value)
return obj
返回到节点的结果是[]
我试图用行返回类型:return type(obj)
,结果返回为一个表。呼叫return type(value)
给我string
。为什么cjson没有对实际对象进行解码?还有其他东西可以用来将字符串解码为json吗。
我找到了问题。看起来node并没有序列化解码后的lua-json对象,它只返回一个空数组[]
。不过它是用lua解码的。以下代码在节点中返回一个json对象:
local value = redis.call("get", "myKey")
local obj = cjson.decode(value)
return cjson.encode(obj)
此外,以下代码返回1
local value = redis.call("get", "myKey")
local obj = cjson.decode(value)
return obj.one
因此,json对象正在创建中,我认为redis包中的json序列化程序正在查找lua中的字符串。