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 <windows.h>
#include <string>
#include <iostream>
#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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
使用过程中出现的问题:
  1. 引用jsoncpp库后链接错误 
    这里写图片描述
    原因: 
    由于jsoncpp库的编译时运行库设置的是MT/MTd,而我们的demo程序使用过的是MD/MDd,两个运行库不匹配导致该问题 
    解决办法: 
    设置demo程序的运行库为MTd,解决该问题(或者编辑jsoncpp 库时将运行库改为MDd)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值