国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用nlohmann json庫進(jìn)行序列化與反序列化

這篇具有很好參考價值的文章主要介紹了使用nlohmann json庫進(jìn)行序列化與反序列化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

  • nlohmann源碼倉庫:https://github.com/nlohmann/json
  • 使用方式:將其nlohmann文件夾加入,包含其頭文件json.hpp即可
  • demo
#include <iostream>
#include "nlohmann/json.hpp"
#include <vector>

using json = nlohmann::json;

// 定義嵌套的結(jié)構(gòu)體
struct Address
{
    std::string street;
    std::string city;
};

// 定義包含多種數(shù)據(jù)類型和結(jié)構(gòu)體數(shù)組的主結(jié)構(gòu)體
struct Person
{
    std::string name;
    int age;
    bool isStudent;
    std::vector<int> grades;
    Address address;
    std::vector<Address> addresses;
};

int main()
{
    // 創(chuàng)建一個Person結(jié)構(gòu)體實(shí)例
    Person person;
    person.name = "John";
    person.age = 30;
    person.isStudent = false;
    person.grades = {90, 85, 92};
    person.address = {"123 Main St", "Anytown"};
    person.addresses = {{"456 Elm St", "Somewhere"}, {"789 Oak St", "Nowhere"}};

    // 序列化結(jié)構(gòu)體到JSON
    json jsonData = {
        {"name", person.name},
        {"age", person.age},
        {"isStudent", person.isStudent},
        {"grades", person.grades},
        {"address", {{"street", person.address.street}, {"city", person.address.city}}},
        {"addresses", json::array()}};

        jsonData["age"] = 20;

    for (const auto &addr : person.addresses)
    {
        jsonData["addresses"].push_back({{"street", addr.street},
                                         {"city", addr.city}});
    }

    // 將JSON對象轉(zhuǎn)換為字符串
    std::string jsonString = jsonData.dump(4); // 4-space indentation for pretty formatting

    // 打印生成的JSON字符串
    std::cout << "Generated JSON:" << std::endl;
    std::cout << jsonString << std::endl;

    // 反序列化JSON字符串到結(jié)構(gòu)體
    Person parsedPerson;
    json parsedData = json::parse(jsonString);

    parsedPerson.name = parsedData["name"];
    parsedPerson.age = parsedData["age"];
    parsedPerson.isStudent = parsedData["isStudent"];
    std::vector<int> parsedGrades = parsedData["grades"].get<std::vector<int>>();
    parsedPerson.address.street = parsedData["address"]["street"];
    parsedPerson.address.city = parsedData["address"]["city"];

    parsedPerson.addresses.clear();
    for (const auto &addr : parsedData["addresses"])
    {
        Address parsedAddr;
        parsedAddr.street = addr["street"];
        parsedAddr.city = addr["city"];
        parsedPerson.addresses.push_back(parsedAddr);
    }

    // 打印反序列化后的結(jié)構(gòu)體成員
    std::cout << "Name: " << parsedPerson.name << std::endl;
    std::cout << "Age: " << parsedPerson.age << std::endl;
    std::cout << "Is Student: " << parsedPerson.isStudent << std::endl;
    std::cout << "Grades: ";
    for (int grade : parsedPerson.grades)
    {
        std::cout << grade << " ";
    }
    std::cout << std::endl;

    std::cout << "Address: Street: " << parsedPerson.address.street << ", City: " << parsedPerson.address.city << std::endl;

    std::cout << "Addresses:" << std::endl;
    for (const auto &addr : parsedPerson.addresses)
    {
        std::cout << "Street: " << addr.street << ", City: " << addr.city << std::endl;
    }

    return 0;
}

文章來源地址http://www.zghlxwxcb.cn/news/detail-692032.html

到了這里,關(guān)于使用nlohmann json庫進(jìn)行序列化與反序列化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 談?wù)刲inux網(wǎng)絡(luò)編程中的應(yīng)用層協(xié)議定制、Json序列化與反序列化那些事

    談?wù)刲inux網(wǎng)絡(luò)編程中的應(yīng)用層協(xié)議定制、Json序列化與反序列化那些事

    由于socket api的接口,在讀寫數(shù)據(jù)的時候是以字符串的方式發(fā)送接收的,如果需要傳輸 結(jié)構(gòu)化的數(shù)據(jù) ,就需要制定一個協(xié)議 結(jié)構(gòu)化數(shù)據(jù)在發(fā)送到網(wǎng)絡(luò)中之前需要完成序列化 接收方收到的是序列字節(jié)流,需要完成反序列化才能使用(如ChatInfo._name) 當(dāng)我們進(jìn)行網(wǎng)絡(luò)通信的的時

    2024年02月06日
    瀏覽(26)
  • Spring Boot 中使用 ObjectMapper 進(jìn)行 JSON 序列化和反序列化

    在 Java 中,可以使用各種 JSON 序列化和反序列化工具將 Java 對象轉(zhuǎn)換為 JSON 字符串或者將 JSON 字符串轉(zhuǎn)換為 Java 對象。其中,Jackson 庫是比較常用的 JSON 序列化和反序列化工具之一,它提供了 ObjectMapper 類,用于將 Java 對象轉(zhuǎn)換為 JSON 字符串,或者將 JSON 字符串轉(zhuǎn)換為 Java 對象

    2024年02月14日
    瀏覽(20)
  • [Linux] 初識應(yīng)用層協(xié)議: 序列化與反序列化、編碼與解碼、jsoncpp簡單使用...

    [Linux] 初識應(yīng)用層協(xié)議: 序列化與反序列化、編碼與解碼、jsoncpp簡單使用...

    有關(guān)Linux網(wǎng)絡(luò), 之前的文章已經(jīng)簡單演示介紹了 UDP 、 TCP 套接字編程 相關(guān)文章: [Linux] 網(wǎng)絡(luò)編程 - 初見UDP套接字編程: 網(wǎng)絡(luò)編程部分相關(guān)概念、TCP、UDP協(xié)議基本特點(diǎn)、網(wǎng)絡(luò)字節(jié)序、socket接口使用、簡單的UDP網(wǎng)絡(luò)及聊天室實(shí)現(xiàn)… [Linux] 網(wǎng)絡(luò)編程 - 初見TCP套接字編程: 實(shí)現(xiàn)簡單的單

    2024年02月15日
    瀏覽(28)
  • 【序列化與反序列化】關(guān)于序列化與反序列化MessagePack的實(shí)踐

    【序列化與反序列化】關(guān)于序列化與反序列化MessagePack的實(shí)踐

    在進(jìn)行序列化操作之前,我們還對系統(tǒng)進(jìn)行壓測,通過 jvisualvm 分析cpu,線程,垃圾回收情況等;運(yùn)用火焰圖 async-profiler 分析系統(tǒng)性能,找出程序中占用CPU資源時間最長的代碼塊。 代碼放置GitHub:https://github.com/nateshao/leetcode/tree/main/source-code/src/main/java/com/nateshao/source/code/ser

    2024年02月11日
    瀏覽(28)
  • 【Linux】序列化與反序列化

    【Linux】序列化與反序列化

    目錄 前言 什么是應(yīng)用層? 再談\\\"協(xié)議\\\" ?什么是序列化和反序列化 網(wǎng)絡(luò)版計(jì)算器 整體流程實(shí)現(xiàn) Sock.hpp的實(shí)現(xiàn) TcpServer.hpp的實(shí)現(xiàn) Protocol.hpp的實(shí)現(xiàn) CalServer.cc的編寫 CalClient.cc的編寫 整體代碼 ? ????????本章是屬于TCP/UDP四層模型中的第一層 應(yīng)用層 相關(guān)的內(nèi)容。主要介紹了序列

    2024年02月10日
    瀏覽(19)
  • 4.4. 對象序列化與反序列化

    4.4. 對象序列化與反序列化

    在本節(jié)中,我們將詳細(xì)討論Java中的對象序列化與反序列化概念、使用方法以及實(shí)例。對象序列化是將對象的狀態(tài)信息轉(zhuǎn)換為字節(jié)流的過程,而反序列化則相反,是將字節(jié)流恢復(fù)為對象的過程。 4.4.1 為什么需要對象序列化? 對象序列化的主要目的是為了在不同的系統(tǒng)間傳輸對

    2024年02月07日
    瀏覽(23)
  • Flutter筆記:序列化與反序列化

    Flutter筆記 序列化與反序列化 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 郵箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/133340592 序列化是一種將復(fù)雜數(shù)據(jù)結(jié)構(gòu)(例如對象、數(shù)組、字典等)轉(zhuǎn)換為線性格式或字節(jié)流的過程,以便于數(shù)據(jù)的存儲

    2024年02月07日
    瀏覽(15)
  • 序列化與反序列化讀取配置文件

    序列化與反序列化讀取配置文件

    定義一個連接配置文件類OmCipNetParam 定義一個結(jié)構(gòu)體,傳遞函數(shù)運(yùn)行結(jié)果和運(yùn)行信息 ? 使用Newtonsoft.Json進(jìn)行序列化和反序列化讀寫配置文件 同理反序列讀取配置文件 注意這里需要引入庫

    2024年02月08日
    瀏覽(22)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】序列化與反序列化

    【計(jì)算機(jī)網(wǎng)絡(luò)】序列化與反序列化

    通過打包的方式,將結(jié)構(gòu)體message發(fā)送給對方 對方收到后就會報告給上層QQ客戶端 結(jié)構(gòu)化的數(shù)據(jù) 是由 多個 string 構(gòu)成的 而以前在網(wǎng)絡(luò)套接字 發(fā)送時,都是按照一個字符串的方式來發(fā)送和接收的 所以想辦法 ,把多個字符串 轉(zhuǎn)化為 一個大\\\"字符串\\\",對方在接收時也是一個長的

    2024年02月10日
    瀏覽(25)
  • Springboot Jackson 序列化與反序列化配置

    可解決在使用默認(rèn)反序列化Jackson時,LocalDateTime類型的請求參數(shù)反序列化失敗的問題

    2024年02月02日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包