Lua脚本将空数组转换为对象

Sum*_*eet 5 java lua redis

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 是一个数组 [] 但输出是一个对象 {}

Dar*_*ius 3

JSON对象定义和lua表的主要区别是lua表没有类型数组。

空的JSON数组[]或对象{}会转换为lua表{},但空的lua表{}可以转换为数组[]或对象{}。

据我所知,cjson for redis 目前还没有解决这个问题的方案,可能的解决方案在Redis Lua Differetiatingempty array and object中提到。(我无法争论它是否有效)