在前面的文章中为大家介绍了C语言中如何,接下来讲一下在C++中的处理,这里给大家介绍一个开源的库。
Jsoncpp是个跨平台的C++开源库,提供的类为我们提供了很便捷的操作,而且使用的人也很多。在使用之前我们首先要从仓库下载源码,地址如下:
由于C++程序猿都是基于VS进行项目开发,下载的源码我们一般不会直接使用,而且将其编译成相应的库文件(动态库或者静态库),这样不论是从使用或者部署的角度来说,操作起来都会更方便一些。
但是,从下载的源码不能直接通过,编译就更谈不上了。它提供的默认编译方式是。我们可以通过使用工具将下载的源码生成一个,这样就可以通过编译出需要的库文件了。
CMake工具的官方下载地址如下:
在这最新的安装包,根据向导完成安装即可。
打开安装好的工具
需要在工具中指定本地的路径(git clone 之后就会得到这个目录),这是我本地的目录:
第二个需要指定的是一个文件存储路径(生成的VS项目会保存到这个目录下),保证这是一个本地的有效目录即可。
设置好之后进行配置,点击按钮
此处需要设置一下,VS的版本以及生成器的平台位数,不填默认就是64位。
配置完成,开始生成VS项目。
打开在工具中指定的生成目录,我这里是,基于项目文件打开这个VS项目。
基于生成的项目文件打开VS项目之后,可以看到里边有很多子项目
我们只需要编译上图标记的那一个就可以了,编译成功之后就可以得到我们需要的库文件了。
通过输出的日志信息,就能找到我们想要的动态库了,把这两个文件收集起来备用。
库中的类被定义到了一个命名空间中,建议在使用这个库的时候先声明这个命名空间:
使用库解析格式的数据,我们只需要掌握三个类:
- :将json支持的数据类型进行了包装,最终得到一个Value类型
- :将Value对象中的数据序列化为字符串
- :反序列化, 将json字符串 解析成 Value 类型
这个类可以看做是一个包装器,它可以封装Json支持的所有类型,这样我们在处理数据的时候就方便多了。
Value类为我们提供了很多构造函数,通过构造函数来封装数据,最终得到一个统一的类型。
如果想要在VS中使用编译出的库,我们还需要做如下配置:
在编码过程中需要在项目文件中包含从下载得到的头文件,有两种处理方式:
- 将头文件放到项目目录下,直接被项目包含引用
- 将头文件放到一个本地固定目录,以后就不再动了,在VS项目属性中设置包含这个目录,我推荐这种
另外,在这个目录中还有一个子目录,所有的头文件都在这个子目录中,我们不要破坏这个目录结构:
在包含需要的头文件的时候,使用如下这种方式:
把本地的头文件目录在项目属性窗口中进行配置:
我这里头文件是放到了的中:
我这里也是将生成的和放到了,在VS项目中需要指定这个库路径:
另外,还需要告诉VS需要加载的动态库是哪一个
此处指定的是动态库对应的文件,也就是
配置完成之后,如果项目中使用了就可以了。在程序执行的时候,如果提示找不到的动态库,
比如:我们要将下面这个Json数组写入的一个文件中
在上面读Json文件的这段代码中,对读出的每个Value类型的节点进行了类型判断,其实一般情况下是不需要做这样的判断的,因为我们在解析的时候是明确地知道该节点的类型的。
虽然Json这种格式无外乎数组和对象两种,但是需求不同我们设计的Json文件的组织方式也不同,一般都是特定的文件对应特定的解析函数,一个解析函数可以解析任何的Json文件这种设计思路是坚决不推荐的。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/8767.html
