在vs2017和clion中使用C++的JSON库jsoncpp

最近需要用c++的解析json,发现现有的jsoncpp库可以用,但在网上找的教程都比较老旧,遇到各种坑,也没找到clion中使用jsoncpp的教程,现在把整个流程记下来给大家参考,无论是vs2017还是clion中使用jsoncpp,都需要先下载源代码,然后再编译源代码的地址为:
https://github.com/open-source-parsers/jsoncpp#generating-amalgamated-source-and-header
在vs2017和clion中使用C++的JSON库jsoncpp_第1张图片

一、vs2017中使用jsoncpp

1、新建一个文件夹build_vs2017放编译好的vs工程使用cmake-gui编译源代码
在vs2017和clion中使用C++的JSON库jsoncpp_第2张图片
source code写源代码的地址,build the binary写新建的build_vs2017这个地址,点configure
2. 出现了红色的再点configure,最后点Generate。这样就生成了vs的工程
在vs2017和clion中使用C++的JSON库jsoncpp_第3张图片

  1. 用vs2017打开工程,在Debug模式下点ALL_BUILD

在vs2017和clion中使用C++的JSON库jsoncpp_第4张图片

  1. (可选)切换成Release模式下点ALL_BUILD

  2. 在build_vs2017/bin/Debug下会生成动态链接文件
    在vs2017和clion中使用C++的JSON库jsoncpp_第5张图片

  3. 在build_vs2017/lib/Debug下会生成静态链接文件
    在vs2017和clion中使用C++的JSON库jsoncpp_第6张图片

  4. (可选)Release的模式下也可以生成静态和动态文件

  5. 在vs中新建工程用来使用jsoncpp,这里命名为postProcess,主程序贴上以下代码
    在vs2017和clion中使用C++的JSON库jsoncpp_第7张图片

// 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;
}
  1. 在项目目录下新建文件夹jsoncpp
    在vs2017和clion中使用C++的JSON库jsoncpp_第8张图片

  2. 把源代码中的头文件\jsoncpp-master\jsoncpp-master\include\json复制到新建的文件夹jsoncpp下
    在vs2017和clion中使用C++的JSON库jsoncpp_第9张图片

  3. 在新建的文件夹jsoncpp下再新建lib,新建Debug和Release
    在vs2017和clion中使用C++的JSON库jsoncpp_第10张图片

  4. 把上边生成的jsoncpp.lib和jsoncpp_static.cpp放到这里
    在vs2017和clion中使用C++的JSON库jsoncpp_第11张图片

  5. 把生成的jsoncpp.dll放到项目目录下
    在vs2017和clion中使用C++的JSON库jsoncpp_第12张图片

  6. 右键项目属性,在VC++目录下,在“包含目录”中放入头文件,“库目录”中放入生成的jsoncpp.lib文件
    在vs2017和clion中使用C++的JSON库jsoncpp_第13张图片

  7. 继续上一步,在链接器/输入的附加依赖性中添加jsoncpp.lib
    在vs2017和clion中使用C++的JSON库jsoncpp_第14张图片

  8. 点运行就ok啦

二、CLion中使用jsoncpp

这个就稍微简单点

  1. 新建文件夹,build_vsMingW(好像名字写错了,先不管)在vs2017和clion中使用C++的JSON库jsoncpp_第15张图片

  2. 打开cmake-gui,把where to build the binaries的目录换成新建的文件夹build_vsMingW
    在vs2017和clion中使用C++的JSON库jsoncpp_第16张图片

3.生成makefile文件,需要点两次configure,再点generate
在vs2017和clion中使用C++的JSON库jsoncpp_第17张图片

4.进入到该目录下,打开cmd,输入mingw32-make
在这里插入图片描述

  1. 构建完成后,在bin目录下有动态链接文件,在lib目录下有静态链接文件
    在vs2017和clion中使用C++的JSON库jsoncpp_第18张图片
    在vs2017和clion中使用C++的JSON库jsoncpp_第19张图片

6.在Clion中新建Cmake项目,点开CMakeLists.txt[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-feNcViM0-1615358643328)(http://image.huawei.com/tiny-lts/v1/images/[email protected])]

  1. 输入以下两句话,注意改成自己的路径,target_include_directories是jsoncpp的头文件路径,target_link_libraries是静态链接库路径
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)

在vs2017和clion中使用C++的JSON库jsoncpp_第20张图片

  1. 在main中输入以下代码,就可以正常运行
#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)

你可能感兴趣的:(在vs2017和clion中使用C++的JSON库jsoncpp)