OpenResty使用cjson操作JSON数据

OpenRestyLua大约 1166 字

项目说明

OpenResty中的cjson库可以完成JSON数据的编码解码等工作。

cjson有两个模块:cjsoncjson.safe,前者在解析失败后会抛出异常,而后者则返回nil

文档地址:https://github.com/openresty/lua-cjson

代码示例

编码

table序列化为字符串

local json = require "cjson.safe"

json.encode({
        code = 0,
        msg = "请求成功"
})

输出json

{
    "code":0,
    "msg":"请求成功"
}

解码

将字符串转换为table

local json = require "cjson.safe"

json.decode([[{"code":0,"msg":"请求成功"}]])

输出table

{
    code = 0,
    msg = "请求成功"
}

table

encode_empty_table_as_object:默认为true,默认会将空的table对象序列化为JSON对象。

local json = require "cjson"

json.encode({
    foo = "bar",
    some_object = {}
})

输出json

{
    "some_object": {},
    "foo": "bar"
}

JSON数组

json.empty_array:序列化空数组

local json = require "cjson"

json.encode({
    foo = "bar",
    some_object = {},
    some_array = json.empty_array
})

输出json

{
    "some_object": {},
    "foo": "bar",
    "some_array": []
}

其他方法

  • array_mt:将table序列化为JSON数组
  • empty_array_mt:使json.encode()(不传任何参数),序列化为JSON数组
  • decode_array_with_array_mt:解码为一个数组
  • encode_number_precision:设置数字的精确度,最多16个字符
  • encode_keep_ buffer:复用缓存提高性能,默认是true
  • encode_max_depth:编码的深度,默认是1000
  • decode_max_depth:解码的深度,默认是1000

开源案例

https://github.com/fendoudebb/z-blog-openresty

阅读 1019 · 发布于 2020-03-09

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批