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

OpenResty中cjson的两种方法相关推荐

  1. ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练)

    ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练) 目录 模型训练评估中常用的两种方法代码实现 T1.留一法一次性切分训练 T2.K折交叉验证训 模型训练评估中 ...

  2. JSP中include的两种方法

      一.JSP中include的两种方法 1.include指令: 1 <%@include file="文件的绝对路径或者相对路径"%> file属性是必填的(绝对或 ...

  3. Redis中持久化的两种方法详解

    Redis提供了两种不同的持久化方法来将数据存储到硬盘里面.一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里;另一种方法教只追加文件(append-only f ...

  4. MATLAB中代码优化的两种方法

    MATLAB中的代码优化 MATLAB中的代码优化有两种重要的方法:预分配组和向量化循环. 我们举一个简单的例子来看,创建一个MATLAB函数来计算f(x) = sin(x / 100π): func ...

  5. 提取pdf文件中文字的两种方法

    如今,在我们的工作与学习中已经不是单单使用word.Excel等格式文件了,pdf格式的文件已经被广泛地运用到我们的办公室中.大家都知道pdf文件是不可直接编辑与修改的,使用起来有些不便.那么当我们需 ...

  6. C++读取txt中数据的两种方法

    有时候,在程序编写过程中涉及到数据的读写,比如读入.txt文档中的数字,本文提供两种读入方法. 一.利用数据流 比如.txt中数据是如下格式: 其中第一行代表有多少个二维数组,本例中是有3个二维数组, ...

  7. jsp中实现文件下载   两种方法

    jsp中实现文件下载             转自:http://aguu125.iteye.com/blog/352314 (一) 最简单的方式是在网页上做超级链接,如:<a href=&qu ...

  8. 在C++中响铃的两种方法

    第一种方法:printf("\a"); 第二种方法:char c=7;cout<<c; 注:在ASCII码表中响铃的字符编码是7. 响铃病毒: #include< ...

  9. 查找Chrome浏览器header中的user-Agent两种方法

    user-Agent是浏览器搜索信息,可以用它来模拟浏览器进行浏览,从而进行爬取网页信息(爬虫) 第一种方法: 首先:F12或右键,检查网页元素 之后:NetWork--index--header-- ...

最新文章

  1. Qt Creator添加资源
  2. 可以打开md_热议MD有病!旭旭宝宝怒斥CG偷开“录像轮播”:人家不开还不行?...
  3. 阻塞队列(1)--ArrayBlockingQueue底层实现
  4. Android的Gson的使用方法,实现Json结构间相互转换
  5. Linux目录的基本说明
  6. 【全电发票】开票金额总额度发生了什么变化?
  7. 虽然有索引,但没有用上
  8. 使用命令批量修改文件的后缀名称
  9. CSS兼容IE6,IE7,FF的技巧(COPY来的,还没看)
  10. Python基础学习数值运算之内建函数
  11. 滑动返回-SwipeBackLayout
  12. Spark源码分析之cahce原理分析
  13. 关于单链表的几个问题
  14. 批量插入数据 C# SqlBulkCopy使用
  15. android shape 使用小结
  16. java的维护_天了噜,Java 8 要停止维护了!
  17. .Net6项目部署IIS步骤
  18. 各类识别、深度学习-开源代码文献梳理
  19. 1061 判断题 PTA
  20. 非线性光纤光学中分步傅里叶算法(SSFFT)的matlab代码实现

热门文章

  1. Tkinter 组件详解(一):Label
  2. KEIL中USB Microlib作用
  3. Wordpress网站备份
  4. 开源中国源码学习(一)——简介
  5. JavaScript----与函数大战的207个回合(来日再战)
  6. 谢文东的一些话,很有道理
  7. [bzoj1502]月下柠檬树
  8. 车辆的纵向控制之标定
  9. java 飞翔小鸟源码
  10. 宗镜录略讲——南怀瑾老师——系列1