最近需要用c++的解析json,发现现有的jsoncpp库可以用,但在网上找的教程都比较老旧,遇到各种坑,也没找到clion中使用jsoncpp的教程,现在把整个流程记下来给大家参考,无论是vs2017还是clion中使用jsoncpp,都需要先下载源代码,然后再编译源代码的地址为:
https://github.com/open-source-parsers/jsoncpp#generating-amalgamated-source-and-header
1、新建一个文件夹build_vs2017放编译好的vs工程使用cmake-gui编译源代码
source code写源代码的地址,build the binary写新建的build_vs2017这个地址,点configure
2. 出现了红色的再点configure,最后点Generate。这样就生成了vs的工程
(可选)切换成Release模式下点ALL_BUILD
(可选)Release的模式下也可以生成静态和动态文件
// postProcess.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#pragma warning(disable : 4996)
//禁用新式jsoncpp API
#include
#include
int main(){
std::cout << "这里是JSON测试" << std::endl;
const char* str = R"({"uploadid": "UP000000","code": 100,"msg": "","files": ""})";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{ std::string upload_id = root["uploadid"].asString();
// 访问节点,upload_id = "UP000000"
int code = root["code"].asInt();
// 访问节点,code = 100
}
int t = 0;
return 0;
}
这个就稍微简单点
3.生成makefile文件,需要点两次configure,再点generate
4.进入到该目录下,打开cmd,输入mingw32-make
6.在Clion中新建Cmake项目,点开CMakeLists.txt[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-feNcViM0-1615358643328)(http://image.huawei.com/tiny-lts/v1/images/[email protected])]
target_include_directories(postProcess_Clion PUBLIC D:/Project/myproject/postProcess_Clion/jsoncpp/include/json)
target_link_libraries(postProcess_Clion PUBLIC D:/Software/cpplib/jsoncpp-master/jsoncpp-master/build_vsMingW/lib/libjsoncpp.a)
#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#elif defined(_MSC_VER)
#pragma warning(disable : 4996)
#endif
#include
#include "json.h"int main()
{
std::cout<<"hello "<<std::endl;
const char* str = R"({"uploadid": "UP000000","code": 100,"msg": "","files": ""})"; Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
std::string upload_id = root["uploadid"].asString(); // 访问节点,upload_id = "UP000000"
int code = root["code"].asInt();
// 访问节点,code = 100
}
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310150447417.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQwOTYzNTI=,size_16,color_FFFFFF,t_70)