MFC下jsoncpp的使用
本文介绍了如何在Windows环境下使用MFC和C++进行JSON解析。文章首先解释了在遇到JSON解析问题时,如何寻找并下载合适的源码,然后详细描述了如何编译和运行这些源码。最后,文章提供了一些关于如何使用这些源码的指导,包括如何添加头文件、引入库以及使用解析函数。

引言

萌新一枚,初入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

咻兔哔
咻兔哔·2020年11月20日

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处

推荐文章

Macos Firefox 开启垂直侧边栏和隐藏顶部标签
其他技术

Macos Firefox 开启垂直侧边栏和隐藏顶部标签

本文介绍了如何在Mac上安装并自定义浏览器的垂直标签页和样式。首先,通过插件市场安装`Sidebery`插件,然后创建`userChrome.css`文件并添加自定义样式。接着,配置`chrome`文件夹的位置,并将`userChrome.css`文件放置到该目录内。最后,根据需要调整标题栏、侧边栏、工具栏等元素的样式。

5月26日47
给项目的GIT目录瘦瘦身
其他技术

给项目的GIT目录瘦瘦身

文章介绍了一系列操作步骤,包括查找大文件、删除指定大文件、重新标记过期缓存文件、回收过期缓存、重新用命令查看文件大小以及重新提交瘦身远程仓库。这些步骤旨在优化存储空间和提高系统性能。

3月21日16
Jetbrains Idea 2019.3.5 不能识别GOROOT SDK版本的解决办法
其他技术

Jetbrains Idea 2019.3.5 不能识别GOROOT SDK版本的解决办法

Jetbrains IDE 2019.3.5无法识别GOROOT SDK版本的问题,解决方法如下:1.进入Go的sdk src/runtime/internal/sys目录。2.编辑zversion.go文件,将go1.17替换成当前版本。参考资料:- https://blog.csdn.net/u011243684/article/details/123865556- https://youtrack.jetbrains.com/issue/GO-11588#focus=Comments-27-5127829.0-0

5月3日6
Golang GUI开发之Webview
其他技术

Golang GUI开发之Webview

本文介绍了如何在Go语言中创建一个简易的跨平台Webview应用。作者首先尝试了多种UI框架和库,如fyne、go-gtk等,但发现它们要么无法实现理想的界面效果,要么缺少某些关键功能。在不断的尝试过程中,发现了`webview/webview`包,它提供了一个浏览器壳子,可以使用各种CSS框架或Vue技术来实现想要的效果。然而,`webview/webview`不支持键盘操作,例如`command+c`、`command+v`和`command+a`等快捷键。为此,作者找到了一个临时的解决方案:在初始化时注入监听代码,以允许用户复制和粘贴文本,选择文件等。最后,通过使用`dialog`包和`webview/webview`库,实现了一个输入框和文件夹选择器的功能,并确保了代码的简洁性。

6月22日16