AKever

导航

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

posted on 2014-01-23 13:01  AKever  阅读(2290)  评论(1)    收藏  举报