声明:
当前网上有很多json相关的开源库,接触网络方面的技术大牛们对json这个网络数据格式也并不陌生,鄙人个人比较喜欢用jsoncpp这个库,所以这里请各位大牛们多多指导。
注意:
如果vs编译器版本小于vs2010版本编译时会提示找不到stdint.h头文件当前不要慌,如果你电脑安装了vs2010以上的版本找到对应的Microsoft Visual Studio X\VC\include目录下去把这个头文件copy到Microsoft Visual Studio X(小于vs20101版本)\VC\include目录下。
步骤:
一、jsoncpp lib生成
1、下载jsoncpp库方式有两种:
1.1 可以使用git clone这个命令克隆 https://github.com/open-source-parsers/jsoncpp.git完整包。
1.2 可以下载鄙人上传到csdn资源库中的源码http://download.csdn.net/download/wu110112/9817317
2、无论下载鄙人的百度网盘还是克隆git上面的源码请按照如下步骤操作
2.1 找到(个人保存的路径)\jsoncpp-master\jsoncpp-master\makefiles\msvc2010文件夹
2.2 用vs打开jsoncpp.sln或lib_json.vcxproj
2.3 修改debug版本的工程属性,把目标文件名后面添加一个_d表示debug版本
2.4 编译lib_json生成debug和release两个版本lib文件
二、vs工程加入jsoncpp相关的步骤
1、在vs工程目录下新建一个jsoncpp文件夹,然后在当前目录下分别创建include和lib文件夹
2、把jsoncpp中的头文件copy到incude文件夹中
3、把jsoncpp中生成的debug和release版本的lib都copy到lib文件夹中
按照如上方式步骤添加当前就可以正常使用json库了。
demo对应解析json数据代码如下:
void Cjsoncpp_testDlg::OnBnClickedOk() { string json = "{\"data\":[{\"cateId\":\"638300000000000002\",\"name\":\"炒菜\",\"rank\":1},\ {\"cateId\":\"638300000000000003\",\"name\":\"汤\",\"rank\":2}],\"code\":200,\"msg\":\"\"}"; Json::Reader reader; Json::Value root; if (!reader.parse(json.c_str(),root)) { AfxMessageBox(TEXT("json error!")); } if ( root.isObject() ) { Json::Int size = root["data"].size(); if ( size != 0) { Json::Int i = 0; string jsondata; for (; i<size; i++) { if (!root["data"][i]["cateId1"].isNull()) { string cateid = root["data"][i]["cateId"].asCString(); string name = root["data"][i]["name"].asCString(); } if ( !root["data"][i]["cateId"].isNull() ) { string cateid = root["data"][i]["cateId"].asCString(); string name = root["data"][i]["name"].asCString(); jsondata.append(cateid); jsondata.append(","); jsondata.append(name); } } } } CDialogEx::OnOK(); }