问题描述
我正在尝试从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的吗?
解决方法
我找到了问题所在。看起来节点未在序列化已解码的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中查找字符串。