欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【超详细】C++Json:VS2015的jsoncpp库配置及简单使用

程序员文章站 2022-04-20 08:04:55
JsonJson是一种数据格式,本来是用于JavaScript的,但是因为他易读,格式明朗等原因,也被用于其他语言中。JsonCpp是一个C++的Json库,利用他我们可以进行数据传输,状态同步。下载JsonCpp库可以从官网下载,也可以从git下载,也可以从各大网站、云盘中下载,不同时间段的资源对应的软件版本和生成模式可能会有出入。通过搜索我下载到了各种不同的Json包,也搜到了不同的安装攻略,但是却有很多不适用。1.现成的Makefile这种库打开后有makefiles文件夹和incl...

Json

Json是一种数据格式,本来是用于JavaScript的,但是因为他易读,格式明朗等原因,也被用于其他语言中。
JsonCpp是一个C++的Json库,利用他我们可以进行数据传输,状态同步。

下载JsonCpp库

可以从官网下载,也可以从git下载,也可以从各大网站、云盘中下载,不同时间段的资源对应的软件版本和生成模式可能会有出入。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
通过搜索我下载到了各种不同的Json包,也搜到了不同的安装攻略,但是却有很多不适用。

现成的Makefile

【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
这种库打开后有makefiles文件夹和include文件夹。
对于此种我们只需要打开makefiles文件夹,找到后缀为.sln的文件,用VS打开。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
然后右击解决方案中的lib_json工程,点击生成即可得到后缀名为lib_json.lib的链接库文件,生成在cpp文件夹中的src文件夹之中。
但是要注意的是自己使用的库是什么版本的。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
在这里可以修改,有的库下载下来只有x86的,如果你需要64的那请找到一个可以修改平台的库来生成。
同时要保证》》调试–>项目属性–>C/C+±->代码生成中的运行库改为/MTd,在使用时也要将使用的项目改成这个,保证一致。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
得到lib_json.lib之后,把这个Lib和库中的头文件也就是include这个文件夹都拷到你要使用的工程目录下,建立一个lib文件夹把Lib放进去。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用

然后打开你的工程。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
在解决方案资源管理器中选择显示所有文件,这样你放进来的文件夹就出现了。右击include文件夹,点击包含在工程内。这样头文件就加进来了。
不想这么做的也可以在项目属性中的VC++目录中的包含目录中把头文件所在路径添加进去。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
记得设置这个。

然后在项目属性–>连接器–>输入–>附加依赖项里把lib_json.lib输入进去。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
这样就包含好了库和头文件了,可以在项目中使用jsoncpp库了。

没有makefile怎么办?!莫慌!

没有makefile文件夹咋办嘞?
下个有的不就完了?
—┴ (╯-_-)╯╧╧ /摔

没有也不要慌,我们有两种解决方案。

计划A
你看看你下下来的库,是不是有如图所示的文件夹?

【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
这是一个cmake文件夹,可以使用cmake这个工具来生成不同需要的makefile文件。

首先,我们需要有一个工具:CMAKE。这个直接搜索官网进去下载就好了。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用

在官网找到这个Download,然后下拉找到自己的平台安装包。

【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
一路NEXT就好啦。

【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
打开后就是这种界面,输入源码地址,再选一个构建地址然后就能生成makefile文件啦。

计划B
竟然这么麻烦!!我不想用这个库了!!!【超详细】C++Json:VS2015的jsoncpp库配置及简单使用

那没关系,咱不用这个库……lib_json.lib文件了。

直接把下载的文件中的Include都添加到项目中去,把头文件都包含进来。然后咱们再把src文件夹中lib_json文件夹里的.cpp文件也悄咪咪的复制一份。直接拿来用!咱不用你的lib了,咱直接用你的cpp!
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用

简单应用

环境配置好了,接下来咱们就该使用他了,那么我们应该咋用呢?
首先我们来看看Json格式的数据:

{
"name" : "dijia""age"  : "nicai""sex"  : "reallyman"
}

这就是一个简单的Json数据了,称为一个object。他以{ 开始, }结束。里面string:value例如名字:迪迦这样的叫做pair键值对,不同的pair之间使用逗号分隔。
再然后嘞,还有个数组arry形式的json数据。

{
"Game":[
{
"Cyperpunk 2077":"tiaopiao"
"time":"12:10"
},
{
"GTA 6":"no made"
"process":"a file folder"
}
]
}

我们来看一段代码:

Json::Value root;
Json::Reader reader;

这个每次使用都要用,reader和root是自己定义的名字,随便写。
我们现在来读一下上面的第二个json数据。
首先我们不直接放代码里读,咱们直接跳过这一步,毕竟一般咱们都是读文件写文件来用。
所以在工程里建立一个demo.json文件,把这段json复制进去。
然后我们打开文件:

ifstream is("demo.json",ios::binary)

fstream是以不同的流形式打开文件,第一个字母分别i,o,以及直接是fstream分别对应输入输出输入输出。请注意句读:输入,输出,输入输出。
所以读文件就用ifstream,写文件就用ofstream啦。
打开文件后我们开始读。
那么应该怎么读呢?
我们先看一下这个文件内部的一个object:

{
"Cyperpunk 2077":"tiaopiao"
"time":"12:10"
}

对于这种数据单独放着,我们这么读:

string Cyper =root["Cyperpunk 2077"].asString
string time =root["time"].asString

这样Cyper的值就是:“tiaopiao”,Time的值就是"time"了。
当然,如果后面的数值是整形,就要用Int型来接,后面跟的也就是asInt了。

现在你会读json的object了!鼓掌(piapiapiapia)。
【超详细】C++Json:VS2015的jsoncpp库配置及简单使用
我们再来看一下这个完整的数据应该怎么读。

{
"Game":[
{
"Cyperpunk 2077":"tiaopiao"
"time":"12:10"
},
{
"GTA 6":"no made"
"process":"a file folder"
}
]
}

对于数组形式,我们当然就按数组读啦。前后两个就是arry[0]和arry[1]的区别而已。
直接上代码:

unsigned int i=0,j=1;
String CyperArray=root["Game"][i]["Cyperpunk 2077"].asString
String GTA=root["Game"][j]["GTA 6"].asString

敲黑板:这个地方要注意的是array[0]和array[1]中的0和1使用了无符号整型的i和j来代替,因为直接输入0和1,jsoncpp会有多个重载函数对应,无法匹配,所以我们要定义两个来替换。

Over!Over ! 其他的后续(可能没有)再更新。

本文地址:https://blog.csdn.net/Flywithdawn/article/details/109385984

相关标签: json cpp vs2015