C语言的JSON库Jansson

Jansson概述Jansson是一个C语言库 , 用于编码 , 解码和处理JSON数据 。其主要特点和设计原则是:

  • 简单直观的API和数据模型
  • 全面的文档
  • 不依赖其他库
  • 完全支持Unicode(UTF-8)
  • 广泛的测试套件
Jansson的API稳定可靠 , 可广泛应用于生产中 。它可以在多种平台上运行 , 包括多种类Unix系统和windows 。它适用于任何系统 , 包括台式机 , 服务器和小型嵌入式系统 。Jansson是以MIT协议授权的 。
编译和安装Jansson解压源码
bunzip2 -c jansson-2.12.tar.bz2 | tar xf -cd jansson-2.12源代码使用GNU Autotools(autoconf , automake , libtool) , 因此编译和安装非常简单 。
./configuremakemake checkmake install要更改目标目录(默认情况下为/usr/local) , 可将--prefix=dir参数用于./configure 。可参阅./configure--help以获取所有可能的配置选项的列表 。
make check命令运行jansson发布的测试套件 。这一步并不是绝对必要的 , 但它可能会发现jansson在你的平台上可能存在的问题 。
如果您从git存储库(或任何其他源代码管理系统)获得源代码 , 则不会有./configure脚本 , 因为它不保存在版本控制中 。要创建脚本 , 需要引导生成系统 。可通过执行如下命令 。
autoreconf -fi此命令创建./configure脚本 , 然后可以如上面描述的使用该脚本编译jansson 。
线程安全性Jansson作为一个库是线程安全的 , 并且没有可变的全局状态 。Jansson的代码内没有执行锁定 。对多个线程共享的JSON值进行只读访问是安全的 , 但对多个线程共享的JSON值进行更改则不可行 。如果多个线程共享的JSON值发生突变 , 则多线程程序必须执行其自身的锁定 。但是 , 引用计数操作(json_incref() ,  json_decref())通常是线程安全的 , 并且可以在线程之间共享的JSON值上执行 。可以使用JANSSON_THREAD_SAFE_REFCOUNT预处理器常数检查引用计数的线程安全性。线程安全的引用计数操作是使用编译器内置的原子函数实现的 , 该函数在大多数现代编译器中都可用 。如果没有编译器支持(JANSSON_THREAD_SAFE_REFCOUNT 未定义) , 则可能很难确保引用计数的线程安全性 。
API参考所有声明都在中jansson.h , 因此应用需要包含jansson.h头文件 。
#include <jansson.h>所有常量都带有前缀JSON_(描述库版本的常量除外 , 带有前缀JANSSON_) 。其他标识符以json_开头 。
库版本
Jansson版本的格式为


    推荐阅读