Lua 脚本将空数组转换为对象。如何避免转换。
测试.lua
local json_str = '{\"items\":[],\"properties\":{}}'
return cjson.encode(cjson.decode(json_str))
Run Code Online (Sandbox Code Playgroud)
输出
redis-cli --eval test.lua
Run Code Online (Sandbox Code Playgroud)
"{\"项目\":{},\"属性\":{}}"
items 是一个数组 [] 但输出是一个对象 {}
JSON对象定义和lua表的主要区别是lua表没有类型数组。
空的JSON数组[]或对象{}会转换为lua表{},但空的lua表{}可以转换为数组[]或对象{}。
据我所知,cjson for redis 目前还没有解决这个问题的方案,可能的解决方案在Redis Lua Differetiatingempty array and object中提到。(我无法争论它是否有效)