c语言用json解析库(jansson)检测字符串是否是json格式的数据

编程入门 行业动态 更新时间:2024-10-25 12:24:49

c语言用json解析库(jansson)检测<a href=https://www.elefans.com/category/jswz/34/1771434.html style=字符串是否是json格式的数据"/>

c语言用json解析库(jansson)检测字符串是否是json格式的数据

C语言检测字符串是否是json格式的数据,可以用jansson库检测,也可以用cjson库来校验。但是若数据格式有问题,jansson可以指出哪里有错误,cjson无法指出。

下面就演示C语言如何使用jansson库检测字符串是否是json格式的数据。

1.下载jansson库源码(zip 文件)

GitHub - akheron/jansson: C library for encoding, decoding and manipulating JSON data

2.编译jansson

2.1.windows 下编译所需环境

a. cmake(可参考文章【windows下cmake的小白级入门使用教程(hello world)】(windows下cmake的小白级入门使用教程(hello world)_cmake windows_西晋的no1的博客-CSDN博客 )

b. vistual studio(如下图是vs2022必须的组件,cmake支持哪个版本的vs,可参照文章【查看当前cmake版本支持哪些版本的Visual Studio】( 查看当前cmake版本支持哪些版本的Visual Studio-CSDN博客 )进行确定)

2.2.编译过程

a.如果是下载的 zip 文件,先解压代码,进入代码文件夹 jansson-master,在当前文件夹的地址栏中输入cmd,然后回车,调出命令行窗口。

b.在命令行窗口中依次输入下述3行内容:

md build

cd build

cmake -G "Visual Studio 17" ..

注:需要根据电脑上安装的cmake和vs版本进行填写,如有些低版本的cmake不支持Visual Studio 2022(升级cmake版本),有的电脑上没有安装Visual Studio 2022(安装Visual Studio 2022,或者选择电脑上有的版本)

vs版本对应

Visual Studio 17 2022       

= Generates Visual Studio 2022 project files.

    Use -A option to specify architecture.

Visual Studio 16 2019       

= Generates Visual Studio 2019 project files.

   Use -A option to specify architecture.

Visual Studio 15 2017 [arch]

= Generates Visual Studio 2017 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 14 2015 [arch]

= Generates Visual Studio 2015 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 12 2013 [arch]

= Generates Visual Studio 2013 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 11 2012 [arch]

= Generates Visual Studio 2012 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 10 2010 [arch]

= Deprecated.  Generates Visual Studio 2010  project files.

   Optional [arch] can be   "Win64" or "IA64".

Visual Studio 9 2008 [arch] 

= Generates Visual Studio 2008 project files.

   Optional [arch] can be "Win64" or "IA64".

编译成功之后,在build文件夹下会生成所有的测试工程。主要内容如下

build

 + private_include

 + include

 + jansson.sln

c.用Visual Studio打开build文件夹下的jansson.sln

d.根据实际使用场景选择合适的版本(Debug或Release),然后选择生成->重新生成解决方案,等待一段时间,可以看到0失败

e.此时可以在build文件夹下看到lib文件夹下有个Debug或Release文件夹,里面有编译后生成的文件静态库jansson_d.lib

3.使用示例

3.1 新建C语言工程

具体操作过程可以参考文件【VS2022 和 VS2010 C语言控制台输出 Hello World】()

3.2 demo.cpp文件的同文件夹下新建一个文件夹,命名为【jansson

3.3 build文件夹下的3个文件(jansson.hjansson_config.hjansson_d.lib)粘贴到jansson文件夹下

注意:后续3步的操作,一定要在与编译jansson的配置一样,否则程序将不可使用jansson_d.lib。

3.4 demo工程属性中添加包含目录

$(LocalDebuggerWorkingDirectory)jansson

3.5 demo工程属性中添加附加库目录

$(LocalDebuggerWorkingDirectory)jansson

3.6 demo工程属性中添加附加依赖项

jansson_d.lib

3.7 将下述示例代码覆盖demo.cpp中的所有内容

#include "jansson.h"int main() {const char* text = "{ \"name\":\"man\", \"age\":30}";json_error_t error;// json_t用于引用任何JSON节点json_t* root = json_loads(text, 0, &error);// 如果读取失败,自动置为空指针if (!root) {// 输出具体的失败信息printf("error: on line %d: %s\n", error.line, error.text);return 1;}else {json_decref(root); // 释放JSON对象。}return 0;
}

3.8 运行测试程序

程序正常运行,无任何输出。

若将

const char* text = "{ \"name\":\"man\", \"age\":30}";

替换成

const char* text = "{ \"name\":\"man\, \"age\":30}";

运行程序,将有如下输出:

更多推荐

c语言用json解析库(jansson)检测字符串是否是json格式的数据

本文发布于:2023-12-04 22:45:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662353.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   语言   格式   数据   jansson

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!