C++ JsonCpp

JsonCpp的下载与使用

Json官网上有各种语言关于Json的解析库。 从这个里面下载JsonCpp: https://github.com/open-source-parsers/jsoncpp jsoncpp-src-0.5.0从这儿下载:https://sourceforge.net/projects/jsoncpp/

在这里插入图片描述
嗯…我这里在github下载了好几个版本(因为有的是之前的版本有makefile文件,有些新的版本就没有makefile文件了,应该是需要自己cmake,另外不编译直接使用.cpp .h文件的时候,一些新版本在VS2013里面会报错,需要选择调整一下),看的相关博客里有提到使用JsonCpp的两种方式:

  • 使用Jsoncpp生成的lib文件
  • 使用Jsoncpp包中的.cpp和.h文件

尝试了这两种方法,坎坎坷坷,记录一下

1.使用Jsoncpp生成的lib文件(vs2013----jsoncpp-0.y.z)

1)编译连接
jsoncpp-0.y.z\makefiles\msvc2010 使用VS2013打开里面的.sln
分别在debug和release模式下:在“解决方案资源管理器”中右击lib_json选择->仅用于项目->仅生成lib_json

2)创建静态链接库SDK
上面需要的文件就生成了,建立一个文件夹(这个文件就是自己项目要使用含有.h和.lib文件的文件夹)
在这里插入图片描述
将jsoncpp-0.y.z\include\json中的.h文件全部复制到这个include文件夹下
将刚才编译生成的debug release目录下的.lib文件放入lib下的新建立的debug和release目录下。

3)项目中配置

  • 项目/属性->C/C++ ->常规->附加包含目录->添加include文件夹:E:\projects\cplus_json_test\Jsoncpp_test\jsoncpp-0.y.z-sc\include
  • 项目/配置属性->C/C++ -> 代码生成右边的“运行库”选择 MTd
  • 项目/配置属性->连接器->常规 ->“附加库目录”添加lib文件夹:E:\projects\cplus_json_test\Jsoncpp_test\jsoncpp-0.y.z-sc\lib\debug

测试程序:


#include <iostream>

#pragma comment(lib,"lib_json.lib")

#include "json\json.h"

using namespace std;

int main()
{
	const char* str = "{\"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 
		cout << "upload_id: " << upload_id << endl;
		cout << "code: " << code << endl;
	}

	getchar();

	return 0;
}
2.使用Jsoncpp包中的.cpp和.h文件(VS2013----jsoncpp-src-0.5.0)
  • 将在include文件夹下的json文件和src文件夹下lib_json文件都拷贝到项目目录下。然后添加到项目中。
    在这里插入图片描述在这里插入图片描述
  • 项目/属性->C/C++ ->常规->附加包含目录-> 添加含有json文件的文件夹E:\projects\cplus_json_test\myjsoncpp
  • 在程序里包含头文件#include "json\json.h"
  • 将json_reader.cpp、json_value.cpp和json_writer.cpp三个文件的 Precompiled Header(预编译头) 属性设置为Not Using Precompiled Headers(不使用预编译头)

注:我这里使用jsoncpp-src-0.5.0,其他的会出现一些错误,有的需要使用VS2015以上的vs。若是版本对了还报错,在json_reader.cpp、json_value.cpp和json_writer.cpp最上面添加 #pragram once
在这里插入图片描述
在这里插入图片描述
测试程序类似

JsonCpp里的几个类
  • Json::Value 表示各种类型的对象,支持的对象类型可见 Json::ValueType枚举值,例如 int string object array等
  • Json::Reader 读取,将Json文件或字符解析到Json::Value,主要函数有Parse
  • Json::Write 纯虚类,不能直接使用,将Json::Value转化成字符串流,使用其子类 Json::FastWriter(输出不带格式Json) Json::StyleWriter(输出待格式的Json)
JsonCpp用法(链接)

很多这方面的:
JsonCpp
Windows10 VS2017 C++ Json解析(使用jsoncpp库)
C++的Json解析库:jsoncpp

一些参考:
vs2013 c++ 编译配置jsoncpp和使用jsoncpp解析json文件
(重要!!!)VS 2013 配置jsoncpp 库(亲测可行)

参考:
C++ Jsoncpp源代码编译与解析Json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值