How to encode decode JSON objects in Redis Lua script?
I am passing a JSON string to Lua script as an arg, I want to manuplate the JSON object to add some data and push to a queue.
How can I encode & decode the JSON objects in Redis Lua script?
2 Answers
Redis Lua scrip comes with the following packages by default
- base
- table
- string
- math
- struct
- cjson
- cmsgpack
- bitop
we can use the cjson
to do the marshalling and unmarshalling of JSON objects.
Following code shows you how to do that
local input = KEYS[1]
local json = cjson.decode(tostring(input))
-- work with json
json.foo = 1
local output = cjson.encode(json);
return output
{"version":3,"data":"IegY21/091yYehMIQUAncHYdvofPdLXJnrgURBfL7MqLU4MJosHGW+2njjaFFX1QDQVVMCm5RbAfKTRXclFRQWjMWPAWslXgGbYGszw4hdFbHkEQEIIl/dncWUTjfJ8zTT88rqGXUnBouaRQy64OP2l8fafhVLx1nPgLyyAmjEGuGsOicqZvfHlFn+KYdPvmA7JoUEac9XuVeqj1vytkEnXi6J6qMJxrKovzDVUIdr1erGLK+77vePf8ODwHeGqfiIvnJBT8qyN356PK47vwpdnLMiCgHVv+i/54Uw40Au2snGkypAsjoQmGmZtm9ILSyAdyTcNmN0mfvGG0/v0mnYmnWaZ4dRlOt2nuiZoIp1/EMq8kfY9rWLvWTlk8taPfjV6GX4ooGuQDWOjNZYLcvDTIyX650tgdQb+tNe2B/ChgXJ1gwOCZm7vIe1F7w3l6V2dqFFSlyHL5TlXlCtNLpEoXIwUVG0NHrPTrL2jOlGG9RiIBuW1aPd8ZieGdCSiVHotqzRn+wM+U9xZ3PXTtqYRFey6od+47rxUy9G8IPR2dLVp18xGesoRFFiTChBh1A/rCY1hv3i8Q3zEscd/5QoNk5sMP+rrWvKwf+wNb1buIM7lJG0VWJBg33gtD/QtAsf+ClNaE0z7HPk/GfuJYBcR/4QiQ7S3creBnYJ2jjdCRmDWRlnFb6UzU1k7Yq3ieEM3kN/yx+zBk9BCMWVnIuGMjOX04OFyvi96eldzavCH397+YV+FaHHBWfF8/I8SJjplPdeQghS8KbRGWouPkkER2sDTRqVK4itbrNZm3PCP59GA8IOI0EiNQnW89LuHuHej6Czq5dyi/RnKBK2Cmk3RlTI0uLxbjPbU4M4FUVZZNDZs18KUx2QRuFULcllayKzb2jG/ReCyvAAC9nkir8To/6upAomcGSIPkJ4mwfIlw5FM5ru4oil16byKus8sm67jLhuWVgdrun0MEvf6Vo9jdq2+BbTGiS2YAIKGwkqy+QbHO8cO/wUwDWhs7Nx3xtqXx8Fd0Pt6JMfce+hDtvsNXE2r3RbpA7f8G2l36AeUWxGThCTELZfGYTAyuWLBdkJx/GX+xyPd9+e3nlLoxBhQUnXh2Y4DDJPCPTzWjyDWlKZQeWtV3rbKRuRkES2Lg"}