json的序列化和反序列化

json实例化

//头文件
#include"json.hpp"
using json=nlohman::json;  //nlohman::json用json替代
#include<map>


//json实例化1
//json可以看作是map的数据结构,保存键值对,另一边可以是数字,也一时字符串,也可以是数组
    json js;
    js["msg_type"]=2;
    js["form"]="zhangsan";
    js["to"]="lisi";
    js["msg"]="hello world";

//发送数据
//json数据对象 -> 序列化 json字符串
    string sendBuf=js.dump();
    cout<<sendBuf<<endl;

//json实例化2
    json js;
    //添加数组
    js["id"]={1,2,3,4,5};
    //添加key——value
    js["name"]="zhangsan";
    //添加对象
    js["msg"]["zhangsan"]="hello world";
    js["msg"]["liushuo"]="hello china";
    //上面等同于下面这句 一次性添加数组对象
    //json的value是字符串数组,里面也可以看作是json,json字符串套json字符串
    js["msg"]={{"zhangsan","hello world"},{"liushuo","hello china"}};


//json实例化3,序列化容器
josn=js;
//直接序列化一个vector容器
    vector<int>vc;
    vc.push_back(1);
    vc.push_back(2);
    vc.push_back(3);
    vc.push_back(4);

    js["list"]=vc;

//直接序列化一个map容器
    map<int,string>m;
    m.insert({1, "zhangsan"});
    m.insert({2, "zhangsan"});
    m.insert({3, "zhangsan"});

    json["path"]=m;
    string sendBuf=js.dump();
    cout<<sendBuf<<endl;

json反序列化

 


    
string recvBuf=func();//接受返回的字符串,上面没有写具体的func();

 //第一个序列化的反序列化
//数据的反序列化,json字符串 -> 反序列化数据对象(可以看作容器,方便访问)
    json jsbuf=josn::parse(recvBuf);
    cout<<jsbuf["msg_type"]<<end;
    cout<<jsbuf["from"]<<end;
    cout<<jsbuf["to"]<<end;

//第二个序列化的反序列化
    cout<<jsbuf["id"]<,endl;
    auto arr=jsbuf["id"];
    cout<<arr[2]<<endl;

//第三个序列化的反序列化
//json对象里面的数组类型,直接仿佛vector容器中
    vector<int> vec=jsbuf["list"];
for(int &v:vec){
    cout<<v<<' ';
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值