Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


OpenResty 使用 cjson 操作 JSON 数据

OpenResty Lua JSON 大约 1167 字

项目说明

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

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

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

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

扫描二维码关注我
昵称:
随便看看 换一批