Windows vs2015 Jsoncpp 库使用记录

编译环境 window7 +vs2015 + release
运行环境 wind32 exe

编译json lib

json 源码下载:
URL: https://github.com/open-source-parsers/jsoncpp

用vs2015打开makefiles\msvc2010下的工程目录,vs2015提示升级配置,选择确定

jsonlib编译设置
1. 选择 release 版本
2. 编译设置 C/C++ 代码生成->运行时库 多线程 DLL (/MD)
3. 常规->项目默认值->字符集 使用多字节字符集

新建win32 控制台项目

项目工程设置项
1. 选择 release 版本
2. 编译设置 C/C++ 代码生成->运行时库 多线程 DLL (/MD)
3. 常规->项目默认值->字符集 使用多字节字符集
4. 链接器->输入-> 附加依赖项 lib_json.lib
5. 链接器->常规-> 附加库目录

特别注意: 运行时库的设置 和编译平台一定要相同,否则引用jsoncpp会有异常

测试代码:


// JsoncppTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"json/json.h"
#include "vector"
#include "string"
#include <iostream>

/*
{
    "sn_list": ["AFAE7894DA24EDAE","45897AFADFADFAE"],
    "err": {
    "errcode": "9000",
    "errmsg": "keys do not exist"
    }
}
*/
int main()
{

    //create json string
    std::vector<std::string> vecSN;

    vecSN.emplace_back(std::string("123QWEDDSDFXD5564"));
    vecSN.emplace_back(std::string("45785DSFAAEAE44AD"));

    Json::Value     error;
    Json::Value     root;

    //JSON 格式易于阅读
    Json::StyledWriter fwriter;

    //一行字符串
    //Json::FastWriter fwriter

    root["sn_list"].resize(0);

    for (int i = 0; i < vecSN.size(); i++)
    {
        root["sn_list"].append(vecSN[i].c_str());
    }

    error["errcode"] = "9000";
    error["errmsg"] = "keys do not exist";
    root["err"] = error;


    std::string strJSON = fwriter.write(root);

    std::cout << "-----json style format: -------\n" << strJSON << std::endl;


    std::cout << "-----json parse: -------\n";

    Json::Reader reader;

    Json::Value sn_list;
    Json::Value  root_reader;

    if (!reader.parse(strJSON, root_reader))
    {
        std::cout << "json parse error.." << std::endl;
        return 0;
    }

    std::cout << "error msg: " << root_reader["err"]["errmsg"].asString() << std::endl;

    sn_list = root_reader["sn_list"];

    if (sn_list.isArray() && sn_list.size() > 0)
    {
        for (int i = 0; i < sn_list.size(); i++)
        {
            std::cout << "SN:" << sn_list[i].asString() << std::endl;
        }
    }
    return 0;
}

运行结果:

 -----json style format: -------
{
   "err" : {
      "errcode" : "9000",
      "errmsg" : "keys do not exist"
   },
   "sn_list" : [ "123QWEDDSDFXD5564", "45785DSFAAEAE44AD" ]
}

-----json parse: -------
error msg: keys do not exist
SN:123QWEDDSDFXD5564
SN:45785DSFAAEAE44AD

完整代码下载: https://download.csdn.net/download/xiao3404/10542550

相关参考资料 https://blog.csdn.net/c_base_jin/article/details/71346503

猜你喜欢

转载自blog.csdn.net/xiao3404/article/details/81053965