Jsoncpp的编译和使用

Jsoncpp的编译和使用

jsoncpp是C++程序用来解析json的开源库,支持c++11,目前该项目已经迁移到GitHub上面。
地址:https://github.com/open-source-parsers/jsoncpp
下载是需要注意,目前jsoncpp支持了c++11,下载是需要注意区分

  • 1.y.z is built with C++11
  • 0.y.z can be used with older compilers

目前最新的非c++11版本是:0.10.5,c++11最新的版本是:1.6.5。我使用的是0.10.5版本,采用VS2015编译。

编译

  1. 下载源码,jsoncpp-0.10.5
  2. 编译源码,进入makefiles\msvc2010,打开jsoncpp.sln,编译,编译的结果为静态库,存放在jsoncpp-0.10.5\makefiles\msvc2010\Debug下,release编译同上,结果为lib_json.lib

使用

  1. 引用头文件,拷贝jsoncpp-0.10.5\include到工程目录
  2. 引用lib库,拷贝lib_json.lib到工程目录
  3. 静态引用,#pragma comment(lib, “lib_json.lib”)
  4. 源码实例,主要是读取json对象,代码如下:
#include 
#include 
#include 
#include "json.h"
using namespace std;
#pragma comment(lib, "lib_json.lib")

int main()
{

    string strValue = "{\"res\":\"success\",\"info\":\"{\\\"port\\\":1024,\\\"host\\\":\\\"192.168.5.215\\\"}\"}";
    cout << strValue << endl;
    Json::Reader reader;
    Json::Value value;
    if (reader.parse(strValue, value))
    {
        cout << value["res"].asString() << endl;
        cout << value["info"].asString() << endl;
        Json::Reader readerTemp;
        Json::Value valueTemp;
        if (readerTemp.parse(value["info"].asString(), valueTemp))
        {
            cout << valueTemp["host"].asString() << endl;
            cout << valueTemp["port"].asInt() << endl;

        }
    }
    return 0;
}

使用过程中出现的问题:

  1. 引用jsoncpp库后链接错误
    Jsoncpp的编译和使用_第1张图片
    原因:
    由于jsoncpp库的编译时运行库设置的是MT/MTd,而我们的demo程序使用过的是MD/MDd,两个运行库不匹配导致该问题
    解决办法:
    设置demo程序的运行库为MTd,解决该问题

你可能感兴趣的:(json)