[C++] JsonCPP 的使用 完整配置过程
最近准备开发一个程序 需要用到C++ 解析json
原始的C++解析json是不现实的 自己也写不出来json解析方法(主要是不靠谱)
所以找到了jsoncpp 这个库 但是。。。 因为各种原因 配置的让我想哭 接下来我来分享一下 我配置这个库的过程吧
首先发现了这个博文(感谢)
https://www.cnblogs.com/esCharacter/p/7657676.html#commentform
从这个博文中找到了json的项目地址 然后下载了下来 https://github.com/open-source-parsers/jsoncpp
得到了这样的目录
接着,按照博文说的开始构建 dist... 这里需要安装python 我的电脑已经安装好了 直接运行那个命令
1 | python amalgamate.py |
发现会失败...
会提示找不到一个文件...
去看了github上面的iss 然后知道需要先cmake 一下
但是那个提出解决方案的人是ubuntu 的操作系统 在windows下默认是没有cmake的
我就想到了我的vs2019似乎是有这个文件的 在vs的安装目录下直接搜索 cmake.exe 然后找到了 打开这个文件所在位置
cmd 切换目录到 jsoncpp源码根目录 拖动cmake.exe 到cmd窗口 输入一个空格 然后拖入CMakeLists.txt 执行即可
这时候才可以运行 python amalgamate.py
之后就能得到dist 复制里面的所有文件和文件夹 到你的工程下(和cpp文件同目录)
包含头文件:
#include "json/json.h"
#include "json/json-forwards.h"
运行博文里面的代码之后 会发现符号未定义什么的错误
LNK2019 无法解析的外部符号 "public: __thiscall Json::Value::Value(enum Json::ValueType)" (??0Value@Json@@QAE@W4ValueType@1@@Z),该符号在函数 _main 中被引用 Click C:\Users\admin\source\repos\Click\源.obj 1
这个是因为没有lib文件导致的
百度之后发现他们都是用vc6编译的
但是我发现那个jsoncpp文件夹下 有一个sln 文件 双击之后打开工程 在右侧找到jsoncpp_lib 项目 设置为运行 设置
然后编译 注意看编译器的输出 找到lib文件的位置
把.lib文件复制到你的项目文件夹里面 与.cpp文件同路径
代码中导入 lib文件
然后你的项目也要设置(这里是要和编译的lib文件一致 所以 都是Debug模式也是可以的吧(猜测))
完整测试代码如下
#include <iostream> #include "json/json.h" #include "json/json-forwards.h" #pragma comment(lib,"jsoncpp.lib") using namespace std; int main() { try { //Json::Value jsonRoot; //定义根节点 Json::Value jsonItem; //定义一个子对象 jsonItem["item1"] = "one"; //添加数据 jsonItem["item2"] = 2; //jsonRoot.append(jsonItem); //jsonItem.clear(); //清除jsonItem jsonItem["item1.0"] = 1.0; jsonItem["item2.0"] = 2.0; //jsonRoot["item"] = jsonItem; cout << jsonItem.toStyledString() << endl; //输出到控制台 }catch(Json::LogicError) { cout << "发生异常" << endl; } return 0; }
最终输出
就彻底成功了.....
对我而言 出现这样的问题... 就是没用过lib的原因吧.... 第一次通过原始的C++使用这样的库
此次没有使用QT的原因就i是感觉Qt项目发行之后 体积太大了....
原生C++ 解析json确实不太方便...
作者:cjdty
出处:https://www.cnblogs.com/cjdty/p/11556096.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步