[C++]Jsoncpp的使用

1.引言

json是现在移动互联网如此发达的年代主流的通信协议。
本文介绍的是json的c++版本的实现:jsoncpp库。

2.项目地址

本文的demo地址为:
https://github.com/lixiang0/demos/tree/master/jsoncpp

3.项目目录的说明

3.1.打开项目

jsoncpp\makefiles\vs71目录为vs2013工程项目。双击jsoncpp.sln即可打开本文的项目。

3.2.lib_json配置

设置jsontest为“启动项目”;
右键项目“lib_json”,点击“属性”->配置属性->常规->输出目录,在输出目录中配置lib库文件的输出路径。
点击“确定”关闭对话框。

3.3.jsontest配置

右键项目“jsontest”,点击->属性->配置属性->链接器->附加依赖项,在附加依赖项中配置上一步操作项目“lib_json”生成的lib库文件。

以上就可以运行本项目了。

下面是本文的main函数代码以及部分解释。


#include <iostream>
#include <string>
#include  <json\json.h> 
using namespace std;


int main(int argc, char* argv[])
{
    char* str1 = "{\"cmd\":100,\"result\":false}";
    char* str2 = "{\"cmd\":101,\"content\":{\"username\":\"user\",\"passwd\":\"123\"}}";
    char* str3 = "{\"cmd\":102,\"userlist\":[{\"name\":\"name1\",\"age\":23},{\"name\":\"name2\",\"age\":26}]}";
    Json::Reader reader;
    Json::Value value;
//解析str1
    cout << "start paser str1..." << endl;
    bool result = reader.parse(str1,value);
    if (!result){
        cout << "json paser str1 error!" << endl;
    }
    cout <<"cmd:" <<value["cmd"].asInt() << endl;
    cout << "result:" << value["result"].asBool() << endl;
    cout  << "end paser str1..." << endl;

//解析str2
    cout << "start paser str2..." << endl;
     result = reader.parse(str2, value);
    if (!result){
        cout << "json paser str2 error!" << endl;
    }
    cout << "cmd:" << value["cmd"].asInt() << endl;
    cout << "username:" << value["content"]["username"].asString() << endl;
    cout << "passwd:" << value["content"]["passwd"].asString() << endl;
    cout << "end paser str2..." << endl;
//解析str3
    cout << "start paser str3..." << endl;
    result = reader.parse(str3, value);
    if (!result){
        cout << "json paser str3 error!" << endl;
    }
    cout << "cmd:" << value["cmd"].asInt() << endl;
    Json::Value arrValue = value["userlist"];
    for (Json::Value::ArrayIndex i = 0; i < arrValue.size(); i++){
        cout << "name:" << arrValue[i]["name"].asString();
        cout << "    age:" << arrValue[i]["age"].asInt() << endl;
    }
    cout << "end paser str3..." << endl;
//构造str1    
    Json::StyledWriter writer;
    Json::Value root;
    root["cmd"] = "100";
    root["result"] = false;
    cout << writer.write(root) << endl;
//构造str2
    Json::Value root2;
    root2["cmd"] = "101";
    Json::Value temp;
    temp["username"] = "user";
    temp["passwd"] = "123";
    root2["conent"] = temp;
    cout << writer.write(root2) << endl;

//构造str3
    Json::Value root3;
    root3["cmd"] = "102";
    Json::Value temp3;
    temp3["username"] = "name1";
    temp3["age"] = "23";
    Json::Value temp2;
    temp2["username"] = "name2";
    temp2["age"] = "26";
    root3["userlist"].append(temp3);
    root3["userlist"].append(temp2);
    cout << writer.write(root3) << endl;
    cin.get();
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值