使用的是json三方库json for modern c++
先使用json定义一个对象,可以想象成STL容器,中间储存的一个个的键值对

#include <cstdio>
#include<iostream>
#include"json/json.h"
#include"json.hpp"
#include<vector>
#include<map>
using json = nlohmann::json;
using namespace std;
void func() {json js; //定义一个json对象,类似于STLjs["msg_type"] = 2;js["from"] = "zhang san";js["to"] = "li si";js["msg"] = "hello,what are you doing now";cout << js << endl; //json类型的可以直接输出string sendbuf = js.dump();cout << sendbuf.c_str() << endl; //网络传输的时候转成char*类型
}
int main()
{func();cout << "hello,world" << endl;return 0;
}


可以看到输出的结果形式上没有区别
json还有一个强大功能,可以序列化容器

void func() {json js;vector<int> vec;vec.push_back(1);vec.push_back(2);vec.push_back(3);js["list"] = vec;map<int, string> map1;map1.insert({ 1,"zhang san" });map1.insert({ 2,"li si" });map1.insert({ 3,"wang wu" });js["map"] = map1;cout << js << endl;
}
int main()
{func();cout << "hello,world" << endl;return 0;
}


json的反序列化,将序列化的字符串反序列化为一个json的对象

string func2()
{json js;js["msg_type"] = 2;js["from"] = "zhang san";js["to"] = "li si";js["msg"] = "hello,how are you";string sendbuf = js.dump(); //序列化为json字符串return sendbuf;
}
int main()
{//json的反序列化,字符串反序列为json对象json rec_buf = json::parse(func2());cout << rec_buf << endl;cout << "hello,world" << endl;return 0;
}


json反序列化是能够将数据类型完全保存的

string func2()
{json js;js["arr"] = { 1,2,3,4,5 }; //数组js["msg_type"] = 2; //intjs["name"] = "zhang san"; //字符串js["country"]["city"] = "CQ"; //jsonstring sendbuf = js.dump(); //序列化为json字符串return sendbuf;
}
int main()
{//json的反序列化,字符串反序列为json对象json rec_buf = json::parse(func2());auto arr = rec_buf["arr"];cout << arr[2] << endl;cout << rec_buf["msg_type"] << endl;json rec_js = rec_buf["country"];cout << rec_js["city"] << endl;return 0;
}


这个三方库非常轻量,也非常方便,很好用
JSON for Modern C++

json 序列化json for modern c++相关推荐

  1. Go 命令行参数,JSON 序列化与反序列化

    #### Go 命令行参数,JSON 序列,反序列化这一节来学习一下Go 如果解析命令行参数,以及JSON 的序列化及反序列化; 命令行参数对于熟悉Linux 的同学来说比较清楚,如: ls -a , ...

  2. JavaScript JSON序列化和反序列化

    文章目录 JavaScript JSON序列化和反序列化 概述 JSON序列化 JSON.stringify() 仅一个参数使用 使用2个参数 使用3个参数 其他 自定义toJson 序列化顺序 反序 ...

  3. json序列化c语言,C语言JSON序列化/反序列化

    最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个: 两个问题: C语言结构体本身没有元数据,这 ...

  4. Java序列化——JDK序列化与Json序列化

    Java原生序列化 Java原生序列化我们可能会了解的比较多,Java类通过实现Serializable接口来实现该类对象的序列化,这个接口非常特殊,没有任何方法,只起标识作用.Java序列化保留了对 ...

  5. JavaScript中的JSON序列化/反序列化

    JSON 1. JSON简介 2. JSON与JS Object区别 3. 对象序列化 3.1 JSON序列化 3.2 JSON反序列化 1. JSON简介 JSON(JavaScript Objec ...

  6. C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出

    原文:C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出 从StackOverflow里找到的答案.发现对最新的Newtownsoft的JSON序列化也同样适用. https://st ...

  7. 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>(马俊昌著),由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买:京东自营链接 ...

  8. .NET 自定义Json序列化时间格式

    .NET 自定义Json序列化时间格式 Intro 和 JAVA 项目组对接,他们的接口返回的数据是一个json字符串,里面的时间有的是Unix时间戳,有的是string类型,有的还是空,默认序列化规 ...

  9. C# Json 序列化与反序列化二

    /// <summary>/// 将对象转换为 JSON 字符串/// </summary>/// <typeparam name="T">&l ...

最新文章

  1. Linux优化和目录结构
  2. lightgbm中的feval参数使用明细
  3. boost::test模块装饰器数据测试用例测试
  4. 割平面法只能求解纯整数规划吗_【DMC第四讲】整数规划
  5. mysql的学习要点_MySQL中的联合索引的学习要点总结
  6. Drools 7.x Rate算法
  7. NBA Top Shot过去24小时二级市场交易额突破630万美元
  8. 实现一个二叉树层级遍历_算法总结:左神class5—二叉树递归和非递归实现遍历(后序用一个栈彩蛋)...
  9. mysql创建表的默认大小_mysql InnoDB建表时设定初始大小的方法
  10. 讲道理 | 三维高斯积分公式
  11. MSM8937-MSM8953 I2C 配置调试指南
  12. oracle seq nextval,在oracle中使用sequence.nextval创建表
  13. cve_2019_0708_bluekeep复现采坑
  14. 拆书笔记24|笨笨的圣人
  15. 阿拉伯数字转换成中文数字 C++
  16. [体感游戏]关于体感游戏的一些思考(二) --- POV和基本场景
  17. 一本读懂BERT(实践篇)
  18. 使用Cocoapods创建私有podspec
  19. KIR: Kwai Instant Recommend --端上智能在快手上下滑推荐取得APP时长+1%的应用实践
  20. EXCEL_整个工作簿的多个Sheet调整为同一个字体

热门文章

  1. [ARC064C] Cosmic Rays-宇宙射线 题解
  2. 用计算机说唱什么歌,最近不知道喜欢上了说唱求大家给点词呗~
  3. 【JAVA基础】java基础之-java8新特性
  4. JPA入门、JPQL
  5. Python 爬虫(五):PyQuery 框架
  6. Android TabLayout总结
  7. 从零开始vim搭建Java开发环境之coc.nvim 篇
  8. arr 安卓调用qmui_腾讯QMUI Android框架使用(一)入门及目录
  9. AUTOSAR的现状和利弊
  10. 【我的C语言学习进阶之旅】解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.