使用的是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. 使用ANY和ALL条件
  2. Strom程序的并发机制,配置并行度(代码实现)、动态改变并行度,local or shuffle分组,分组的概念以及分组类型
  3. 阿里巴巴计算机视觉领域最强阵容集结完毕团体参加CVPR会议
  4. Python 调试工具 PDB(Linux 环境下调试)
  5. Edge浏览器怎么打开开发者模式
  6. 【Lintcode】029.Interleaving String
  7. CSS中id选择器和class选择器
  8. linux 复制 链接文件,Linux硬链接、软连接和复制的区别
  9. Flink AggOperator 增量聚合函数
  10. day055056Django之多表操作,多表查询
  11. java 类复制构造方法_java面向对象入门(3)-java构造方法
  12. PS 基础教程,调整图像品质「1」如何调整亮度和对比度?
  13. 如何保证测试的覆盖率
  14. Windows11 0x80190001错误解决
  15. 《Dreamweaver CS6 完全自学教程》笔记 第四章:创建站点
  16. 用计算机语言说我累了,我累了,真的好累(读到心酸)
  17. 【嵌入式系统开发12】在stm32F103C8T6环境下,用HAL库,采用中断模式编程,控制LED的高亮与熄灭
  18. 调用阿里云身份证识别服务识别本地图片,很详细,附工具类
  19. 【Java岗】9月华为校招+阿里巴巴社招完整面经
  20. 区块链的20种应用场景

热门文章

  1. c语言浮点数菜鸟教程,C语言菜鸟基础教程之单精度浮点数与双精度浮点数
  2. 移动端适配单位vw和px的转换
  3. sum and plan | 要温和有力量地长途旅行~
  4. sudoers的深入介绍与用户权限控制
  5. win8计算机睡眠无法唤醒,WIN8.1睡眠后无法唤醒,需要重启计算机
  6. 【NGUI基础知识】—Scroll View(滚动视图)详解
  7. 表白墙的实现【前后端交互】
  8. 内核系统调用openat Hook(Android10)
  9. .net core 解释 wwwroot 存放文件的原理
  10. Logitech K380 ⌨️ + iOS 14 常用快捷键指南