json 序列化json for modern c++
使用的是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++相关推荐
- Go 命令行参数,JSON 序列化与反序列化
#### Go 命令行参数,JSON 序列,反序列化这一节来学习一下Go 如果解析命令行参数,以及JSON 的序列化及反序列化; 命令行参数对于熟悉Linux 的同学来说比较清楚,如: ls -a , ...
- JavaScript JSON序列化和反序列化
文章目录 JavaScript JSON序列化和反序列化 概述 JSON序列化 JSON.stringify() 仅一个参数使用 使用2个参数 使用3个参数 其他 自定义toJson 序列化顺序 反序 ...
- json序列化c语言,C语言JSON序列化/反序列化
最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个: 两个问题: C语言结构体本身没有元数据,这 ...
- Java序列化——JDK序列化与Json序列化
Java原生序列化 Java原生序列化我们可能会了解的比较多,Java类通过实现Serializable接口来实现该类对象的序列化,这个接口非常特殊,没有任何方法,只起标识作用.Java序列化保留了对 ...
- JavaScript中的JSON序列化/反序列化
JSON 1. JSON简介 2. JSON与JS Object区别 3. 对象序列化 3.1 JSON序列化 3.2 JSON反序列化 1. JSON简介 JSON(JavaScript Objec ...
- C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出
原文:C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出 从StackOverflow里找到的答案.发现对最新的Newtownsoft的JSON序列化也同样适用. https://st ...
- 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>(马俊昌著),由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买:京东自营链接 ...
- .NET 自定义Json序列化时间格式
.NET 自定义Json序列化时间格式 Intro 和 JAVA 项目组对接,他们的接口返回的数据是一个json字符串,里面的时间有的是Unix时间戳,有的是string类型,有的还是空,默认序列化规 ...
- C# Json 序列化与反序列化二
/// <summary>/// 将对象转换为 JSON 字符串/// </summary>/// <typeparam name="T">&l ...
最新文章
- 使用ANY和ALL条件
- Strom程序的并发机制,配置并行度(代码实现)、动态改变并行度,local or shuffle分组,分组的概念以及分组类型
- 阿里巴巴计算机视觉领域最强阵容集结完毕团体参加CVPR会议
- Python 调试工具 PDB(Linux 环境下调试)
- Edge浏览器怎么打开开发者模式
- 【Lintcode】029.Interleaving String
- CSS中id选择器和class选择器
- linux 复制 链接文件,Linux硬链接、软连接和复制的区别
- Flink AggOperator 增量聚合函数
- day055056Django之多表操作,多表查询
- java 类复制构造方法_java面向对象入门(3)-java构造方法
- PS 基础教程,调整图像品质「1」如何调整亮度和对比度?
- 如何保证测试的覆盖率
- Windows11 0x80190001错误解决
- 《Dreamweaver CS6 完全自学教程》笔记 第四章:创建站点
- 用计算机语言说我累了,我累了,真的好累(读到心酸)
- 【嵌入式系统开发12】在stm32F103C8T6环境下,用HAL库,采用中断模式编程,控制LED的高亮与熄灭
- 调用阿里云身份证识别服务识别本地图片,很详细,附工具类
- 【Java岗】9月华为校招+阿里巴巴社招完整面经
- 区块链的20种应用场景
热门文章
- c语言浮点数菜鸟教程,C语言菜鸟基础教程之单精度浮点数与双精度浮点数
- 移动端适配单位vw和px的转换
- sum and plan | 要温和有力量地长途旅行~
- sudoers的深入介绍与用户权限控制
- win8计算机睡眠无法唤醒,WIN8.1睡眠后无法唤醒,需要重启计算机
- 【NGUI基础知识】—Scroll View(滚动视图)详解
- 表白墙的实现【前后端交互】
- 内核系统调用openat Hook(Android10)
- .net core 解释 wwwroot 存放文件的原理
- Logitech K380 ⌨️ + iOS 14 常用快捷键指南