ctyun.json.encode
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | json_text= ctyun.json.encode(value) |
作用 | 将Lua值序列化为包含JSON表示的字符串。 |
入参 | value: Lua值或表,支持如下类型:boolean, nil,number,string,table。 |
返回值 | json_text: UTF-8 JSON字符串。 |
示例:
local value = { true, { foo = "bar" } }
local json_text = ctyun.json.encode(value) -- 返回: '[true,{"foo":"bar"}]'
ctyun.json.decode
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | value= ctyun.json.decode(json_text) |
作用 | 将任何UTF-8 JSON字符串反序列化为Lua值或表。 |
入参 | json_text: UTF-8 JSON字符串。 |
返回值 | value: Lua值或表。 |
示例:
local json_text = '[ true, { "foo": "bar" } ]'
local value = ctyun.json.decode(json_text) --返回: { true, { foo = "bar" } }
ctyun.encode_args
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | str= ctyun.encode_args(table) |
作用 | 根据URI编码规则将Lua表编码为查询args字符串。 |
入参 | table: 参数Lua表。表键必须是Lua字符串。 |
返回值 | str: 查询args字符串。 |
示例:
ctyun.encode_args({foo = 3, ["b r"] = "hello world"}) --结果为:foo=3&b%20r=hello%20world
--还支持多值查询参数。只需使用Lua表来显示参数的值
ctyun.encode_args({baz = {32, "hello"}}) --结果为baz=32&baz=hello
--如果值表为空,效果相当于nil值。还支持布尔参数值,如果参数值为false,则效果相当于nil值。
ctyun.encode_args({a = true, b = 1}) --结果为a&b=1
ctyun.decode_args
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | table, err = ctyun.decode_args(str, max_args?) |
作用 | 将URI编码的查询字符串解码为Lua表。这是ngx.encode_args的逆函数。 |
入参 | str:string,uri的query string。 max_args: 可选,可用于指定从str参数解析的最大参数数量。默认情况下,最多解析100个请求参数(包括同名的参数),并丢弃额外的URI参数,以防止潜在的拒绝服务攻击。当超过限制时,它将返回第二个值,即字符串"truncated"。 这个参数可以设置为0来消除限制并处理接收到的所有请求参数。 |
返回值 | table: 解码为Lua表。 err: 当str参数超过max_args时,err返回"truncated"。 |
示例:
local args = ctyun.decode_args(str, 0)
ctyun.unescape_uri
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | newstr = ctyun.unescape_uri(str) |
作用 | 对uri进行反转义。 |
入参 | str:string,已转义的uri。 |
返回值 | newstr: 对uri反转义后的结果。 |
示例:
local newstr = ctyun.unescape_uri("b%20r56+7")
ctyun.escape_uri
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | newstr = ctyun.escape_uri(str,type?) |
作用 | 对uri进行转义编码。 |
入参 | str:string,待编码字符串。 type:可选,默认为2, 可为以下值: (1)0:将str转义为完整的URI,字符(空格)、#、%、?、0x00 ~ 0x1F、0x7F ~ 0xFF将被转义。 (2)将str转义为uri。除字母、数字、-、.、_、~之外的所有字符将被编码为%XX。 |
返回值 | newstr: 对uri转义后的结果。 |
示例:
local newstr = ctyun.escape_uri("/test/a_tt?b=##4")
ctyun.decode_base64
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | newstr = ctyun.decode_base64(str) |
作用 | 将str参数解码为原始形式的base64摘要。如果str格式不正确,则返回nil。 |
入参 | str:string,待解码字符串。 |
返回值 | newstr: base64解码后的结果,或者为nil(str格式不正确的情况)。 |
示例:
local src = "R/pvxzHC4NLtj7S+kXFg/NePTmk="
local newstr = ctyun.decode_base64(src)
ctyun.encode_base64
函数信息详见下表:
项目 | 描述 |
---|---|
语法 | newstr = ctyun.encode_base64(str, no_padding?) |
作用 | 将str编码为base64摘要。 |
入参 | str:string,待编码字符串。 no_padding: boolean类型,可选,表示是否应该将base64填充添加到结果摘要中(默认为false,即启用填充)。 |
返回值 | newstr: base64摘要。 |
示例:
local src = "hello"
local newstr = ctyun.encode_base64(src)