使用Jansson处理JSON

简介

Jansson是一个用于解码、编码、操控JSON的C库。其特性为:

  1. 简单直观的API和数据模型
  2. 没有依赖项
  3. 完整的Unicode支持(UTF-8)
构建

Jansson使用cmake作为构建工具。可以执行下面的命令构建:

上述命令执行后,Jansson的头文件和静态库被安装到/home/alex/CPP/lib/jansson/2.9目录

使用

这里我们创建一个CMake工程:

解码JSON

下面的代码展示了如何把字符串解码为json_t结构:

运行上述代码后输出:

编码JSON

下面的代码展示了如何把json_t结构编码为字符串:

运行上述代码后输出:

打包JSON

下面的代码展示了如何把零散数据打包(pack)为json_t结构:

可用的格式限定符如下表:

限定符 说明
s 将null结尾的UTF-8字符串转换为JSON字符串
s? 和上面类似,但是如果位置参数是NULL则插入JSON null值
s# 对应两个位置参数const char *, int,将指定长度的UTF-8缓冲转换为JSON字符串
s% 和上面类似,只是未知参数类型为const char *, size_t
+ 把此位置参数连接到前一个位置参数后面
+# 和上面类似,接收位置参数const char *, int
+% 和上面类似,接收位置参数const char *, size_t
n 输出null,不消耗位置参数 
转换int为JSON布尔值
转换int为JSON整数
转换json_int_t为JSON整数
f 转换double为JSON实数 
o 原样插入json_t*结构
和上面类似,但是目标json_t的引用计数会增加
 o?     o? 类似上面两个,但是当位置参数为NULL时插入null
[fmt] 使用内部的格式限定符构建一个JSON数组,fmt可以是任意符合要求的格式限定符序列
{fmt}  使用内部的格式限定符构建一个JSON对象,fmt可以是任意符合要求的格式限定符序列
解包JSON

下面的代码展示了如何把json_t结构解包为零散数据: 

posted @ 2019-05-30 17:09  苍月代表我  阅读(7074)  评论(0编辑  收藏  举报