[C/C++] -- JSON for Modern C++

JSON for Modern C++(nlohmann/json)是一个流行的 C++ JSON 库,由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API,使得在C++中解析和生成JSON数据变得非常方便。

1.JSON简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同系统之间传输和存储数据。它基于JavaScript语法,但已经成为一种独立于编程语言的通用格式。

以下是 JSON 文件的一些特点和常见用途:

  1. 易读性:JSON 使用人类可读的文本格式表示数据,易于阅读和理解。

  2. 轻量级:相比于 XML 等其他格式,JSON 是一种轻量级的数据格式,适合在网络传输和存储中使用。

  3. 数据结构:JSON 支持包括对象(object)、数组(array)、字符串(string)、数字(number)、布尔值(true/false)和 null 在内的多种数据类型。

  4. 常见用途:JSON 文件常用于 Web 开发中,作为前后端数据交换的标准格式。它也经常用于配置文件、日志记录等场景。

开源地址:

GitHub - nlohmann/json: JSON for Modern C++

2.使用方法

  • 序列化
#include "json.hpp"
using json = nlohmann::json;#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;// json序列化示例1
void func1()
{json js;js["姓名"] = "afison";js["学号"] = 1222034907;js["性别"] = "男";string sendBuf = js.dump();cout << sendBuf.c_str() << endl;
}// json序列化示例2
void func2()
{json js;// 直接序列化一个vector容器vector<int> vec;vec.push_back(4);vec.push_back(5);vec.push_back(6);js["list"] = vec;// 直接序列化一个map容器map<int, string> m;m.insert({1, "小红"});m.insert({2, "小明"});m.insert({3, "小兰"});js["name"] = m;cout << js << endl;
}int main()
{func1();func2();return 0;
}

  • 反序列化
int main()
{string recvBuf = func1();//数据的反序列化 json jsbuf = json::parse(recvBuf);//反序列化cout<<jsbuf["姓名"]<<endl;cout<<jsbuf["学号"]<<endl;cout<<jsbuf["性别"]<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458157.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文精读--ViT

ViT的提出挑战了CNN在计算机视觉领域的绝对统治地位。ViT不仅在视觉领域开了一个新坑&#xff0c;因为它打破了cv与nlp之间的壁垒&#xff0c;所以还在多模态领域挖了一个大坑 题目是AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE&#xff0c;把…

(2)(2.14) SPL Satellite Telemetry

文章目录 前言 1 本地 Wi-Fi&#xff08;费用&#xff1a;30 美元以上&#xff0c;范围&#xff1a;室内&#xff09; 2 蜂窝电话&#xff08;费用&#xff1a;100 美元以上&#xff0c;范围&#xff1a;蜂窝电话覆盖区域&#xff09; 3 手机卫星&#xff08;费用&#xff…

EDM营销平台哪个好?推荐的邮件营销平台?

EDM邮件营销平台有哪些&#xff1f;外贸EDM邮件营销平台有哪些&#xff1f; EDM营销平台已成为企业推广产品和服务的重要工具。但是&#xff0c;面对市场上众多的EDM营销平台&#xff0c;究竟哪个更好呢&#xff1f;下面&#xff0c;蜂邮EDM将从平台功能、用户体验、数据分析和…

SpringMVC原理(设计原理+启动原理+工作原理)

文章目录 前言正文一、设计原理1.1 servlet生命周期简述1.2 设计原理小结 二、启动原理2.1 AbstractHandlerMethodMapping 初始化 --RequestMapping注解解析2.2 DispatcherServlet 的初始化2.3 DispatcherServlet#initHandlerMappings(...) 初始化示例说明 三、工作原理 前言 …

DolphinScheduler本地安装

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

(十四)springboot实战——spring securtity安全框架原理之启动流程

前言 本节内容主要介绍spring securtity的初始化启动流程&#xff0c;spring security是通过EnableWebSecurity注解来启用的&#xff0c;在EnableWebSecurity注解中主要引入了WebSecurityConfiguration、SpringWebMvcImportSelector、OAuth2ImportSelector、HttpSecurityConfi…

存算一体:架构创新,打破算力极限

1 需求背景 在全球数据量呈指数级暴涨&#xff0c;算力相对于AI运算供不应求的现状下&#xff0c;存算一体技术主要解决了高算力带来的高能耗成本矛盾问题&#xff0c;有望实现降低一个数量级的单位算力能耗&#xff0c;在功耗敏感的百亿级AIoT设备上、高能耗的数据中心、自动驾…

NLP_循环神经网络(RNN)

文章目录 RNN结构RNN实战RNN小结 RNN结构 NPLM 在处理长序列时会面临一些挑战。首先&#xff0c;由于它仍然是基于词的模型&#xff0c;因此在处理稀有词汇或者词汇表外的词汇时效果不佳。其次&#xff0c;NPLM不能很好地处理长距离依赖关系。而上面这两个局限&#xff0c;恰恰…

Cookie、Session、Token、JWT的区别

文章目录 概述什么是认证&#xff08;Authentication&#xff09;什么是授权&#xff08;Authorization&#xff09;什么是凭证&#xff08;Credentials&#xff09;Cookiecookie 重要的属性 Sessionsession 认证流程&#xff1a; Cookie 和 Session 的区别TokenRefresh Token …

进程优先级、切换、调度

1. 进程优先级 当多个进程等待访问资源&#xff0c;需要排队&#xff0c;所以优先级可以确定访问资源的先后顺序。有优先级的原因就是资源狼多肉少。 在linux中优先级的本质也就是task_struct中一个整型字段&#xff08;PRI&#xff09;,默认值是80&#xff0c;并且范围是[60,…

【蓝桥杯冲冲冲】[NOIP2017 提高组] 宝藏

蓝桥杯备赛 | 洛谷做题打卡day29 文章目录 蓝桥杯备赛 | 洛谷做题打卡day29[NOIP2017 提高组] 宝藏题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示题解代码我的一些话[NOIP2017 提高组] 宝藏 题目背景 NOIP2017 D2T2 题目描…

spring cloud stream

背景 主要解决不同消息中间件切换问题。实现不同中间件的代码解耦。 链接: 支持的中间件 后文使用kafka测试。 引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-stream</artifactId></depende…