最近准备开发一个程序 需要用到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  我的电脑已经安装好了 直接运行那个命令

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"] = ;
//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 ;
}

最终输出

就彻底成功了.....

对我而言 出现这样的问题... 就是没用过lib的原因吧.... 第一次通过原始的C++使用这样的库

此次没有使用QT的原因就i是感觉Qt项目发行之后 体积太大了....

原生C++ 解析json确实不太方便...

[C++] JsonCPP 的使用 完整配置过程的更多相关文章

  1. Linux-JAVA-JDK完整配置过程

        JDK是目前很流行的开发工具包,内含jre是支撑jvm运行的组件. 01.jdk下载 http://www.oracle.com/technetwork/java/javase/downloa ...

  2. Nginx和FastDfs完整配置过程

    借鉴(https://blog.csdn.net/qq_34301871/article/details/80060235) 1.unknown directive "ngx_fastdfs ...

  3. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  4. Kali Linux虚拟机安装完整安装过程及简单配置(视频)

    点击播放视频 附:视频中出现的两个txt文本,包含了大致的安装与配置过程: 文本1:KaliLinux虚拟机安装和初步配置 Kali Linux虚拟机安装和初步配置 大家好,今天给大家演示一下在VMw ...

  5. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  6. Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程

    下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(bina ...

  7. [转]caffe的配置过程

    caffe的配置过程 转:http://blog.csdn.net/brightming/article/details/51106629   版权声明:本文为博主原创文章,欢迎转载!转载请写明原文链 ...

  8. WCF分布式开发步步为赢(2)自定义托管宿主WCF解决方案开发配置过程详解

    上一节<WCF分布式框架基础概念>我们介绍了WCF服务的概念和通信框架模型,并给出了基于自定义托管服务的WCF程序的实现代码.考虑到WCF分布式开发项目中关于托管宿主服务配置和客户端添加引 ...

  9. CAS SSO:汇集配置过程中的错误解决方法

    本教程为gevin.me原创文章,转载请注明: CAS SSO:配置过程中的错误解决方法 | Gevin’s Blog 本文将收集在配置CAS SSO遇到的所有错误,希望对大家有帮助,也方便下次搭建的 ...

随机推荐

  1. vue 学习2

    模板指令.属性总结 html 中的标签属性 1. :class 值是对象,key为class 的值,值为boolean类型 html标签任意属性都可以:属性,表示动态值(值是变化的,不是固定不变的) ...

  2. send and recieve message with myself (python socket )

    # socket server import socket sk = socket.socket() sk.bind(("127.0.0.1",8082)) sk.listen() ...

  3. Android View框架的layout机制

    概述 Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure) Android View框架的measure机制 2.View树的布局(layout)Andr ...

  4. PAT - A1073

    1073 Scientific Notation (20point(s)) 小数点移动的边界条件 小数点左移 超过数据左边界 小数点右移 未超过数据右边界 超过数据右边界 +0.1E+2 --> ...

  5. ubuntu更改mysql配置文件,使其产生日志文件mysql.log

    1.打开mysql配置文件,将68,69行的注释取消掉,保存关闭 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 2.重启mysql服务 sudo servic ...

  6. Python原来这么好学-1.3节: 知识要点总结与内容复习

      这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编 ...

  7. java - GC垃圾收集器详解(一)

    概要 该图标记了在jdk体系中所使用到的垃圾收集器及对应的关系图.图片上方为年轻代的垃圾收集器而图片下方是老年代的垃圾收集器.当选择某一个区域的垃圾收集器时会自动选择另外一个区域的另一个垃圾收集器.例 ...

  8. 假期学习【三】HDFS操作及spark的安装/使用

    1.安装 Hadoop 和 Spark 进入 Linux 系统,参照本教程官网“实验指南”栏目的“Hadoop 的安装和使用”,完 成 Hadoop 伪分布式模式的安装.完成 Hadoop 的安装以后 ...

  9. 用数学解赌博问题不稀奇,用赌博解数学问题才牛B

    有一个经典的概率问题:平均需要抛掷多少次硬币,才会首次出现连续的 n 个正面?它的答案是 2^(n+1) – 2 .取 n=2 的话,我们就有这样的结论:平均要抛掷 6 次硬币,才能得到两个连续的正面 ...

  10. Nginx防止DDOS流量攻击

    DDOS流量攻击:频繁的发送请求,造成宽带占用,其他客户端无法访问                Nginx解决DDOS流量攻击,利用limit_req_zone限制请求次数    limit_con ...