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.pswp.cn/news/715632.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715632.shtml
英文地址,請注明出處:http://en.pswp.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配置。這是因為《幻獸帕…