JSON encoding and decoding

To decode or encode JSON in a Lua function, import ‘json’ package:

-- import "json" package when working with JSON
local json = require("json")

-- example payload:
-- {
--   "user": "Peter",
--   "age": 25,
--   "city": "Edinburgh"
-- }

local request_payload, err = json.decode(r.RequestBody)
if err then error(err) end

-- now, request_payload is a normal JSON object and we
-- can access individual values

r:SetRequestBody(request_payload.user)
-- request will now have a single value 'Peter' in the body

To encode a structure back into a JSON string:

-- import "json" package when working with JSON
local json = require("json")

-- constructing a new object that we will encode
-- into a JSON string
local new_payload = {
    action= "hello", 
    message= "world"}

-- encoding
local encoded_payload, err = json.encode(new_payload)
if err then error(err) end

r:SetRequestBody(encoded_payload)
-- webhook request body is now changed to:
-- {
--   "action": "hello",
--   "message: "world"
-- }