Skip to main content

JSON Module

JSON Module - json​

Dump Lua values to JSON text (json.encode)​

Declaration​

json_text = json.encode(value)

Parameters and Return Values​

  • value any or json.null
  • json_text
    • string, returns nil if conversion fails
Limitations

Not all Lua values can be converted to JSON, such as userdata, functions, and tables containing userdata or functions. These values will be ignored during conversion.

Example​

json.encode
local tb = {
["膜"] = "图样图森破桑叹斯乃衣服",
["蛤"] = "比你们高到不知道哪里去了",
moha = {
1,0,0,4,6,9,5,1,0,0,
},
nullvalue = json.null,
}
--
local jsonstr = json.encode(tb)
sys.alert(jsonstr)
--
local tmp = json.decode(jsonstr)
sys.alert(tmp.moha[5])
sys.alert(tostring(tmp.nullvalue))

Load JSON text as Lua values (json.decode)​

Declaration​

value = json.decode(json_text)

Parameters and Return Values​

  • json_text string
  • value
    • any or json.null, returns nil if conversion fails

Example​

json.decode
nLog(json.decode('true'))
nLog(json.decode('17'))
nLog(json.decode('"哈哈"'))
nLog(json.decode('null'))
nLog(json.decode(''))
--
table.deep_print(json.decode('{}'))
table.deep_print(json.decode('{"娘子":"啊哈","你好":"世界"}'))
table.deep_print(json.decode('[]'))
table.deep_print(json.decode('[1, 0, 0, "4695100"]'))
--
sys.alert(print.out())
-- Use json.decode to convert Unicode encoding to text
sys.alert(json.decode([["\u82cf\u6cfd"]]))

NULL constant in JSON (json.null)​

Declaration​

json.null

Description​

This is not a function but a constant. When printed as text, it appears as "userdata: 0x0". It is used to represent the null value in JSON.

Why is it necessary?

Because nil in Lua tables is treated as non-existent, the key will disappear after being converted to JSON. Therefore, a specific value is needed to represent this null.

Example​

json.null
local tb = json.decode('{"nullvalue":null}')
if tb['nullvalue'] == json.null then
sys.alert(json.null)
end