C++(2) Json -- JsonCpp 第三方库的引用
JsonCpp 第三方库的引用,引用json数据
一 编译链接
1 在相应官网下载jsoncpp
2 解压得到jsoncpp-src-0.5.0文件
3 打开jsoncpp-src-0.5.0 -> makefiles -> vs71 -> jsoncpp.sln
4 转换项目为VS2010格式
5 选择debug模式
6 在“解决方案资源管理器”中右击 lib_json 选择->仅用于项目 -> 仅生成lib_json
7 再次右击 lib_json 选择->仅用于项目 -> 仅链接lib_json
8 选择release模式
9 重复操作 6 和 7
10 生成的.lib文件夹在jsoncpp-src-0.5.0 ->build -> vs71 中。
二 创建静态链接库SDK
1 在 D:\study\toolsForVS2010 (这里换成你自己想要放置静态链接库SDK的位置)中创建文件夹 jsonPP
2 在jsonPP中创建文件夹 include 和 lib
3 在include中创建文件夹 json ,将jsoncpp-src-0.5.0 -> include -> json 中的.h文件全部复制过来
4 在lib中创建文件夹debug和release ,把jsoncpp-src-0.5.0 ->build -> vs71 -> debug -> lib_json 中的.lib文件(比如json_vc71_libmtd.lib)复制到debug文件夹(此时可以修改文件夹名为json.lib),同理,把jsoncpp-src-0.5.0 ->build -> vs71 -> release -> lib_json 中的.lib文件(比如json_vc71_libmtd.lib)复制到release文件夹
三 打开要添加json的项目,或新建一个WIN32控制台程序(添加main.cpp,加入源代码,示例代码可在jsoncpp.sln的 json_test中找到)
1 选择 项目 ->属性
2 选择 配置属性 -> C/C++ -> 常规 右边的“附加包含目录” 添加include文件夹 :D:\study\toolsForVS2010\jsonPP\include
3 选择 配置属性 -> C/C++ -> 代码生成 右边的“运行库” 选择 MTd
4 选择 配置属性 -> 连接器 -> 常规 右边的“附加库目录” 添加lib文件夹 :D:\study\toolsForVS2010\jsonPP\lib\debug
5 选择 配置属性 -> 连接器 -> 输入 右边的“附加依赖项” 添加lib文件 :json_vc71_libmtd.lib(若在 二 - 4 中修改了文件名为json.lib,则此处改成json.lib)
6 点击应用完成json配置。
7 若项目需要发布时(即项目选择release),则
a. 选择 配置属性 -> C/C++ -> 代码生成 右边的“运行库” 选择MT
b. 选择 配置属性 -> 连接器 -> 常规 右边的“附加库目录” 添加lib文件夹 :D:\study\toolsForVS2010\jsonPP\lib\release
c. 然后可以运行程序获得release版本程序
四\测试数据
// TestJson.cpp : 定义控制台应用程序的入口点。 // #include "StdAfx.h" #include <string> #include "json\json.h" using namespace std; using namespace Json; int main() { Json::FastWriter write; Json::Reader reader; Json::Value map; map["name"]="Rinne"; map["age"]=23; string jsonData =write.write(map); //解析JSON数据 //--先将数据解析到 Value(parseData)中 Json::Value parseData; reader.parse(jsonData, parseData); Json::Value valueName = "默认"; Json::Value valueAge = -1; valueName = parseData.get("name", valueName); valueAge = parseData.get("age", valueAge); const char* nameStr =valueName.asCString() ; int age = valueAge.asInt(); printf("name:%s,age:%d",nameStr,age); return 0; }
输出结果如下:
name:Rinne,age:23
转自:http://hi.baidu.com/befreedoma/item/3899881951051b2ff7625c7c
浙公网安备 33010602011771号