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),因此编译和安装非常简单。

./configure

make

make check

make 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

所有常量都带有前缀JSON_(描述库版本的常量除外,带有前缀JANSSON_)。其他标识符以json_开头。

库版本

Jansson版本的格式为ABC,其中A是主要版本,B是次要版本,C是微型版本。如果微版本为零,则从版本字符串中将其省略,即版本字符串仅为AB。当新版本仅修复错误且未添加新功能时,微型版本会增加。当以向后兼容的方式添加新功能时,次要版本会增加,而微型版本会设置为零。当存在向后不兼容的更改时,主版本会增加,其他版本会设置为零。以下预处理程序常量指定库的当前版本:

JANSSON_MAJOR_VERSION,JANSSON_MINOR_VERSION,JANSSON_MICRO_VERSION

以上宏分别指定主要版本,次要版本和微型版本,其值为整型。

JANSSON_VERSION

当前版本的字符串表示形式,例如"1.2.1"或 "1.3"。

JANSSON_VERSION_HEX

版本的3字节十六进制表示形式,例如 0x010201版本1.2.1和0x010300版本1.3。这在数字比较中很有用,例如:

#if JANSSON_VERSION_HEX >= 0x010300

/* Code specific to version 1.3 and above */

#endif

JANSSON_THREAD_SAFE_REFCOUNT

如果定义了此值,则Jansson中的所有只读操作和引用计数都是线程安全的。对于早于2.11或在编译器未提供内置原子函数的版本中未定义此值 。详细的API可参考https://jansson.readthedocs.io/en/2.12/apiref.html

以下代码创建一个新的JSON数组,并为其添加一个整数:

json_t *array, *integer;

array = json_array();

integer = json_integer(42);

json_array_Append(array, integer);

json_decref(integer);

c语言json库如何编译,C语言的JSON库Jansson相关推荐

  1. c语言程序可以单独编译,c语言中的函数可不可以单独进行编译?_后端开发

    在C语言中,要求参加运算的数必须是整数的运算符是什么_后端开发 在C语言中要求参加运算的数必须是整数的运算符是"%":"%"符号在c语言中有两种释义,一是求余符 ...

  2. c语言程序可以单独编译,c语言的函数能单独进行编译吗?

    c语言的函数能单独进行编译吗? 发布时间:2020-04-20 10:27:20 来源:亿速云 阅读:493 作者:小新 c语言的函数能单独进行编译吗?很多人都不太了解,今天小编为了让大家更加了解c语 ...

  3. 什么是脚本语言?什么是解释性语言?什么是编译性语言?

    首先脚本语言,之前虽然一直嘴上说脚本语言但是对他并没有一个很清楚的概念.然后在网上查了一下也问了一下师傅刘哥,脚本语言开始就是用来"批量式"的执行命令.你在一个文件里把命令都写进去 ...

  4. c语言组建怎样变成编译,c语言编译【处理流程】

    虽然电脑已经很普遍了,但是一些年长的人对电脑的操作不是很熟悉,比如在使用win7系统时一旦遇到c语言编译 时就懵了,对于c语言编译 处理起来相对来说较简单,按照我们的步骤处理c语言编译 很容易上手,c ...

  5. C语言初学者-VS2017里编译c语言程序操作指南,scanf可用

    vs2017是一全宇宙最牛之一的IDE(个人觉得是全宇宙颜值最高hhh) 下面为一个小白给大家分享怎么用vs2017编译c语言 1.确定vs2017配置:只需要"使用c++的桌面开发&quo ...

  6. lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)

    今天看到了之前的笔记,看到之前写的笔记,感觉自己都不认得了~~一.静态链接库(lib) 首先创建    "在VC6中创建项目:Win32 Static Library" 在项目中创 ...

  7. java调用c语言编辑器_如何用java调用c语言编译器实现在线编译c语言?

    要在java中调用c语言的库,需要使用Java提供了JNI. 举例说明 在c语言中定义一个 void sayHello()函数(打印Hello World);然后在Java中调用这个函数显示Hello ...

  8. c语言整数幂怎么编译,c语言次方(c程序怎么编写x的y次方)

    for (i = 0; i < n; i++) { result *= num; // num 为底数,n 为幂, result 为结果 } 循环表示:S=a^10可表示为:for(int i= ...

  9. centos如何编译c语言文件,centos如何编译c语言代码

    编译c,c++代码 安装gcc 1.使用如下命令查询 centos 官方gcc的所有包: yum -list gcc* 可安装的软件包 gcc.x86_64gcc-c++.x86_64gcc-gfor ...

最新文章

  1. 公开课报名 | 基于自定义模板的OCR结果的结构化处理技术
  2. php禁止指定ip访问网站,方法分享:如何利用.htaccess禁止某个IP访问网站
  3. 总结403到504的常用问题
  4. Ubuntu下firefox启动问题
  5. delphi中exit,abort,break,continue,halt,runerro 的区别
  6. selenium IDE录制
  7. sqlite.interop.dll 请确保此文件可以访问_不用数据线,一秒让电脑和iphone快速传文件...
  8. Linux Increase The Maximum Number Of Open Files / File Descriptors (FD)
  9. SAP Commerce Cloud 架构概述
  10. aspen变压吸附塔_空压机科普:吸附式干燥机的结构和原理
  11. java quartz mybatisplus_Springboot+redis+SpringMVC+Mybatis Plus分布式开发系统源码
  12. 苹果首席设计官将离职;华为将从世界范围招揽天才少年;新版 Edge 更新 | 极客头条...
  13. (转载)lib 和 dll 的区别、生成以及使用详解
  14. c语言 队列方法的编写
  15. 字符串匹配算法:从这段代码判断你是不是在大气层
  16. 多商家点餐小程序源码
  17. 修改WordPress网站默认wp-content/uploads上传文件路径
  18. C语言/461.(汉明距离)Hamming Distance
  19. gitlab修改项目名称
  20. 用计算机时的注意事项,计算机使用注意事项

热门文章

  1. HTML信件-一种奇特的实现方式
  2. python如何控制鼠标键盘_Python控制鼠标键盘
  3. 数据,源码防泄密解决方案
  4. 洋葱模型php,PHPIZE的作用 - tree2013的个人空间 - OSCHINA - 中文开源技术交流社区
  5. 英语口语七十五之[火锅大杂烩]
  6. 弹出框样式,swal is not define
  7. 再见2018,感谢你的一路陪伴
  8. 【存档】精确的过零检测电路
  9. 交叉谱分析——Python
  10. C++获取、设置鼠标坐标并移动鼠标