C++ 使用 nlohmann::json存储json文件

C++ 使用 nlohmann::json存储json文件

  • nlohmann::json 概述
  • JSON 存储的示例
  • 以追加的方式存储json文件

nlohmann::json 概述

nlohmann::json 是 C++ 中一个流行的 JSON 库,由 Niels Lohmann 开发。它提供了一个简单而强大的 API,用于解析、构建、操作和序列化 JSON 数据。

nlohmann::json 是一个模板类,可以用来表示 JSON 数据。它可以表示 JSON 对象、数组、数值、字符串、布尔值和空值等各种类型。nlohmann::json 支持方便的成员函数和操作符重载,使得对 JSON 数据的访问和修改非常直观和简便。

JSON 存储的示例

#include <iostream>
#include <fstream>
#include "nlohmann/json.hpp"using json = nlohmann::json;int main() {// 创建一个复杂的嵌套 JSON 对象json data = {{"name", "John"},{"age", 30},{"is_student", false},{"grades", {85, 92, 78, 90}},{"address", {{"street", "123 Main St"},{"city", "New York"},{"country", "USA"}}},{"friends", {{{"name", "Alice"}, {"age", 28}},{{"name", "Bob"}, {"age", 32}},{{"name", "Claire"}, {"age", 27}}}}};// 将 JSON 对象写入文件std::ofstream file("data.json");if (file.is_open()) {file << std::setw(4) << data << std::endl;file.close();std::cout << "JSON data has been written to file." << std::endl;} else {std::cerr << "Failed to open file for writing." << std::endl;}return 0;
}

以追加的方式存储json文件

在打开文件时使用 std::ofstream 的 std::ios_base::app 模式来追加写入数据。

std::ofstream json_out_file_("data.json", std::ios_base::app);

以下是 nlohmann::json 常见的用法和功能:

  1. 解析和构建 JSON 数据:

    nlohmann::json json_data = nlohmann::json::parse(json_string);  // 解析 JSON 字符串为 JSON 对象
    nlohmann::json json_data = {{ "key", "value" }, { "array", {1, 2, 3} }};  // 构建 JSON 对象// 在 JSON 对象中添加新的字段或修改现有字段
    json_data["new_key"] = "new_value";
    json_data["existing_key"] = 123;// 创建 JSON 数组
    nlohmann::json json_array = {1, 2, 3, 4, 5};
    
  2. 访问和操作 JSON 数据:

    std::string value = json_data["key"];  // 获取 JSON 对象中指定字段的值
    int size = json_array.size();  // 获取 JSON 数组的长度
    bool is_object = json_data.is_object();  // 检查 JSON 数据是否为对象// 遍历 JSON 对象或数组的元素
    for (const auto& element : json_data) {std::string key = element.first;nlohmann::json value = element.second;// 处理元素
    }// 修改 JSON 数组的元素
    json_array[2] = 10;
    
  3. 序列化和反序列化 JSON 数据:

    std::string serialized_json = json_data.dump();  // 将 JSON 对象序列化为字符串// 从文件中读取 JSON 数据并解析
    std::ifstream input_file("data.json");
    nlohmann::json json_data;
    input_file >> json_data;
    

nlohmann::json 提供了一种便捷和高效的方式来处理 JSON 数据,使得在 C++ 程序中解析、生成和操作 JSON 变得更加简单。它非常适合于处理各种 JSON 数据,包括配置文件、API 响应和数据交换等。

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

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

相关文章

电子电气架构——车载以太网协议栈

电子电气架构——车载以太网协议栈 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 没有人关注你。也无需有人关注你。你必须承认自己的价值&#xff0c…

MySQL入门------数据库与SQL概述

目录 前言 一、数据库相关概念 二、数据模型 1.关系型数据库&#xff08;RDBMS&#xff09; 三、MySQL数据库 1.下载和安装 2.配置环境变量 四、SQL 1.SQL通用语法 2.SQL分类 前言 从本期开始&#xff0c;我们开始学习数据库的相关理论和实践知识&#xff0c;从入门…

jupyter 用pyecharts进行数据分析

一、jupyter和pyecharts下载和打开 因为我是用的pycharm&#xff0c;所以我直接在pycharm项目终端中下载pip install jupyter,pip install pyecharts 在你下载的项目路径中输入jupyter notebook 之后会进入页面 Jupyter 具体使用参考这个链接&#xff1a;Jupyter Notebook基本…

Pygame教程01:初识pygame游戏模块

Pygame是一个用于创建基本的2D游戏和图形应用程序。它提供了一套丰富的工具&#xff0c;让开发者能够轻松地创建游戏和其他图形应用程序。Pygame 支持许多功能&#xff0c;包括图像和声音处理、事件处理、碰撞检测、字体渲染等。 Pygame 是在 SDL&#xff08;Simple DirectMed…

常用设计模式详解

设计模式 1.UML图 统一建模语言是用来设计软件的可视化建模语言。定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。 1.1类图 1.1.1类的表示方式 在UML类图中&#xff0c;类使用包含类名、属性(field) 和方法(method) 且带有分割线…

基本正则表达式

基本正则表达式 正则命令功能&#xff3e;尖角号&#xff0c;用于模式的最左侧&#xff0c;如“^oldbpy"&#xff0c;匹配以oldboy单词开头的行$美元符&#xff0c;用于模式的最右侧&#xff0c;如"oldboy$"&#xff0c;表示以oldboy单词结尾的行^$组合符&…

Java基于springboot的厨艺交流平台的设计与实现代码

摘 要 使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在厨艺交流信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的厨艺交流平台功…

如何优雅的删除undo表空间

前言 因磁盘空间不足&#xff0c;需要将undo表空间迁移到其它的存储空间 本文介绍如何优雅的删除undo表空间&#xff0c;并在新的存储空间中创建新的undo表空间 详细操作步骤如下&#xff1a; 1、查看默认undo表空间 SQL>show parameter undo NAME …

Redis的主从搭建

1.准备两台机器&#xff0c;安装好redis 2.修改从服务器的redis配置 slaveof <masterip> <masterport>两个参数 masterip 主的ip 主的端口号 masterport 3. 启动redis 1.先启动主机redis 2.再启用从机redis 主机redis日志打印 从机redis 日志打印

【python】1.python3.12.2和pycharm社区版的安装指南

欢迎来CILMY23的博客喔&#xff0c;本篇为【python】1.python3.12.2和pycharm社区版的安装指南&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 目录 一、python3.12.2的下载与安装 1.1下载 1.2安装 二、pycharm的安装 2.1下载安装 2…

Bootstrap的使用

目录 js的引入&#xff1a; 1.行内式 2.嵌入式 3.外链式 Bootstrap:的引入 注意事项&#xff1a; 条件注释语句&#xff1a; 栅格系统&#xff1a; 列嵌套&#xff1a; 列偏移&#xff1a; 列排序&#xff1a; 响应式工具&#xff1a; Bootstrap的字体图标的使用&a…

2024最新算法:河马优化算法(Hippopotamus optimization algorithm,HO)求解23个基准函数,提供MATLAB代码

一、河马优化算法 河马优化算法&#xff08;Hippopotamus optimization algorithm&#xff0c;HO&#xff09;由Amiri等人于2024年提出&#xff0c;该算法模拟了河马在河流或池塘中的位置更新、针对捕食者的防御策略以及规避方法。河马优化算法的灵感来自河马生活中观察到的三…

【金三银四】Mysgl优化了解?什么情况下会导致SQL索引失效?如何写出高效SQL与优化慢SQL

Mysgl优化 MySQL 优化是指对 MySQL 数据库的配置、表设计、查询语句等进行针对性的优化&#xff0c;以提高数据库的性能和效率。这包括但不限于合理设计数据库表结构、编写高效的 SQL 查询语句、创建合适的索引以及调整数据库服务器的参数等。 当MySQL单表记录数过大时&#xf…

【测试工具】Fiddler

1.Fiddler简介 Fiddler是位于客户端和服务器端的HTTP代理&#xff0c;能够记录客户端和服务器之间的所有 HTTP请求&#xff0c;是web调试的利器。既然是代理&#xff0c;也就是说&#xff1a;客户端的所有请求都要先经过Fiddler&#xff0c;然后转发到相应的服务器&#xff0c…

【应用多元统计分析】--数据矩阵及R语言表示

在多元分析中&#xff0c;数据通常以矩阵的形式出现&#xff0c;下面结合R语言介绍基本的矩阵运算。主要包括&#xff1a;创建矩阵向量&#xff0c;矩阵加减、乘积&#xff0c;矩阵的逆&#xff0c;行列式的值&#xff0c;特征值与特征向量&#xff0c;QR分解&#xff0c;奇异值…

微前端-乾坤《》

微前端 一个应用&#xff0c;当不断迭代的时候&#xff0c;功能会越来越多&#xff0c;代码量随着也会变得越来越大。进而代码之间的耦合性会变高&#xff0c;这样导致开发和维护很糟心&#xff0c;动一发而牵全身。于是有了微前端来解这个问题&#xff0c;按功能可以将这个应…

day02-JavaScript-Vue

文章目录 1 JavaScript1.1 介绍 1.2 引入方式1.3 基础语法1.3.1 书写语法1.3.2 变量1.3.3 数据类型和运算符 1.4 函数1.4.1 第一种定义格式1.4.2 第二种定义格式 1.5 JavaScript对象1.5.1 基本对象1.5.1.1 Array对象语法格式特点属性和方法 1.5.1.2 String对象语法格式属性和方…

17.来自Sora的夺舍妄想——享元模式详解

OpenAI 的 Sora 模型面世之后&#xff0c;可以说人类抵御AI的最后阵地也沦陷了。 在此之前&#xff0c;人们面对AI交互式对话&#xff0c;AI制图&#xff0c;AI建模之类的奇迹时&#xff0c;还可以略微放肆的说&#xff1a;“的确很神奇&#xff0c;这毕竟还是比人类世界低了一…

Redis基本知识

一、什么是Redis Redis是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;用于存储键值对、缓存、消息队列、分布式锁等。 二、Redis和mencached的区别 相同&#xff1a;都是基于内存的数据库&#xff0c;读写都…

2024年腾讯云部署幻兽帕鲁服务器,如何选择合适的服务器配置套餐畅玩游戏?

选择合适的服务器配置套餐以畅玩《幻兽帕鲁》游戏&#xff0c;首先需要考虑的是玩家数量和对服务器性能的需求。根据腾讯云提供的配置推荐&#xff0c;对于4到8人的玩家&#xff0c;推荐配置为4核16G12M&#xff1b;而10到20人的玩家则建议选择8核32G22M配置。这是因为《幻兽帕…