如何解决Redis Lua解码Json返回空表
我正在尝试从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中查找字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。