MFC下jsoncpp的使用
咻兔哔 / 技术文章

引言

萌新一枚,初入Windows编程学习搞MFC,进行到网络编程的时候,碰到json解析的问题,度娘 google 找答案,不过对于萌新的我来说,感觉有点蒙啊.于是就有了下面的记录.

搞源码

网上搞的源码 有贴 github的有贴 sourceforge的 GitHub 的需要Cmake 虚拟机里面只有VS 所以略过,去Sourceforge

下载地址:

https://sourceforge.net/projects/jsoncpp/?source=typ_redirect

编译源码

下载文件解压以后得到入下图:

74a601312a908a0e0ed743d24cb35d96.png

再依次打开\makefiles\vs71,双击jsoncpp.sln启动visual studio,解决方案如下,有三个项目,我们只需要编译lib_json即可。

QQ20201120112701.png

对我们有用的就只有 lib_json 只需要编译这个就好了

下面要说的很重要请注意

一、 首先要对lib_json的编译进行设置, 右键项目->属性->C/C+±>输出文件->汇编程序输出。此处修改为无列表

QQ20201120113150.png

该项设置主要为了防止 C1083: 无法打开编译器生成的文件:“…/…/build/vs71/release/lib_json\json_value.asm”: No such file or directory 错误.

二、 右键项目->属性->c/c+±>代码生成->运行库 , 此处设置要与你自己的项目都设置一致 否则 项目编译会报各种错误

其他项可以自己参考着来.

3.png

最后编译生成文件即可.

使用篇

一、 将编译好的文件\jsoncpp-src-0.5.0\build\vs71\release\lib_json\json_vc71_libmt.lib 复制到你的工程目录下

二、 将\jsoncpp-src-0.5.0\include\ 下的json 文件夹复制到你的工程目录

三、 添加头文件 右键项目-> 添加->现有项 将工程下json文件夹下的所有头文件添加进来

4.png

四、 引入头文件和lib库

#include "json/json.h"
#pragma comment(lib,"json_vc71_libmt.lib")

五、 使用解析

代码示例:

	CString strText = responseText;

	Json::Reader reader;

	Json::Value root;

	CString tmpJson;

	//LPTSTR p = strText.GetBuffer();
	USES_CONVERSION;

	char *cJson = T2A(strText.GetBuffer(0));

	strText.ReleaseBuffer();

	if (reader.parse(cJson,root))
	{
		tmpJson = root["data"]["access_token"].asCString();

		MessageBox(tmpJson);
	}

备注部分 T2A宏 需要导入 #include <atlconv.h> 并且需要 使用USES_CONVERSION 否则

当直接使用T2A W2A A2W,在编译时会出现报错:error C2065: “_lpw”: 未声明的标识符 等

5.png

支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章