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

開源庫nlohmann json使用備忘

這篇具有很好參考價值的文章主要介紹了開源庫nlohmann json使用備忘。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

nlohmann/json是一個用于解析JSON的開源C++庫,口碑一流,無需額外安裝其他第三方庫,還支持單個頭文件模式,使用起來非常方便直觀。

1. 編譯

從官網(wǎng)https://github.com/nlohmann/json的Release頁面下載單個json.hpp即可直接使用,無需單獨編譯。

2. 使用示例

下面以示例的方式羅列nlohmann/json庫的基本使用方法。

2.1 生成JSON

方式1

int main()
{
    using json = nlohmann::json;

    json j;
    j["pi"] = 3.141;
    j["happy"] = true;
    j["name"] = "Niels";
    j["nothing"] = nullptr;
    j["answer"]["everything"] = 42;
    j["list"] = { 1, 0, 2 };
    j["object"] = { {"currency", "USD"}, {"value", 42.99} };

    // 轉(zhuǎn)成字符串
    std::string strJSON = j.dump(2); // 2個空格的縮進

    std::cout << strJSON;
    return 0;
}

輸出如下:

{
  "answer": {
    "everything": 42
  },
  "happy": true,
  "list": [
    1,
    0,
    2
  ],
  "name": "Niels",
  "nothing": null,
  "object": {
    "currency": "USD",
    "value": 42.99
  },
  "pi": 3.141
}

方式2

int main()
{
    using json = nlohmann::json;
    json j = {
        {"pi", 3.141},
        {"happy", true},
        {"name", "Niels"},
        {"nothing", nullptr},
        {"answer", {{"everything", 42}}},
        {"list", {1, 0, 2}},
        {"object", {{"currency", "USD"}, {"value", 42.99}}}
    };

    // 轉(zhuǎn)成字符串
    std::string strJSON = j.dump(2);

    std::cout << strJSON;
    return 0;
}

輸出內(nèi)容與方式1一樣。

方式3

int main()
{
    using json = nlohmann::json;

    json j;
    j["pi"] = 3.141;
    j["happy"] = true;
    j["name"] = "Niels";
    j["nothing"] = nullptr;

    json j_answer;
    j_answer["everything"] = 42;

    j["answer"] = j_answer;

    json j_list = json::array();
    j_list.push_back(1);
    j_list.push_back(0);
    j_list.push_back(2);

    j["list"] = j_list;

    json j_object;
    j_object["currency"] = "USD";
    j_object["value"] = 42.99;

    j["object"] = j_object;

    // 轉(zhuǎn)成字符串
    std::string strJSON = j.dump(2);

    std::cout << strJSON;
    return 0;
}

輸出內(nèi)容與方式1一樣。

2.2 解析JSON

int main()
{
    using json = nlohmann::json;

    std::string strJSON = u8R"(
    {
        "answer": {
             "everything": 42
        },
        "happy": true,
        "list": [
            1,
            0,
            2
         ],
        "name": "Niels",
        "nothing": null,
        "object": {
            "currency": "USD",
            "value": 42.99
        },
        "pi": 3.141
    }
    )";

    auto jsonObj = json::parse(strJSON);
    std::cout << jsonObj["pi"].get<float>() << std::endl; // 3.141
    std::cout << jsonObj["pi"].get<double>() << std::endl; // 3.141
    std::cout << std::boolalpha << jsonObj["happy"].get<bool>() << std::endl; // true
    std::cout << jsonObj["name"].get<std::string>() << std::endl; // Niels
    assert(jsonObj["nothing"] == nullptr);
    std::cout << jsonObj["answer"]["everything"].get<int>() << std::endl; // 42
    std::cout << jsonObj["list"].size() << std::endl; // 3
    std::cout << jsonObj["list"][0].get<int>() << std::endl; // 1
    std::cout << jsonObj["list"][1].get<int>() << std::endl; // 0
    std::cout << jsonObj["list"][2].get<int>() << std::endl; // 2
    std::cout << jsonObj["object"]["currency"].get<std::string>() << std::endl; // USD
    std::cout << jsonObj["object"]["value"].get<float>() << std::endl; // 42.99

    // 依次輸出:
    // 1
    // 0
    // 2
    for (json::iterator it = jsonObj["list"].begin(); it != jsonObj["list"].end(); ++it) {
        std::cout << *it << std::endl;
    }

    return 0;
}

3. 異常處理

當解析和生成JSON出錯時,nlohmann/json會拋出異常,因此在解析和生成JSON時,需要進行異常捕獲。

int main()
{
    using json = nlohmann::json;

    std::string strJSON = u8R"(
    {
        "pi": 3.141
    }
    )";

    try {
        auto jsonObj = json::parse(strJSON);
        std::cout << jsonObj["ppp"].get<float>() << std::endl;
    }
    catch (std::exception& e) {
        std::cout << e.what() << std::endl;
    }

    return 0;
}

4. 判斷成員是否存在

int main()
{
    using json = nlohmann::json;

    std::string strJSON = u8R"(
    {
        "pi": 3.141
    }
    )";

    auto jsonObj = json::parse(strJSON);
    std::cout << std::boolalpha << jsonObj.contains("pi") << std::endl; // true
    std::cout << std::boolalpha << jsonObj.contains("ppp") << std::endl; // false

    return 0;
}

歡迎訪問我的個人站點:https://jiangxueqiao.com文章來源地址http://www.zghlxwxcb.cn/news/detail-565568.html

到了這里,關(guān)于開源庫nlohmann json使用備忘的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • nlohmann json:類型檢查

    nlohmann提供了成員函數(shù)type(),用于返回當前的json數(shù)據(jù)類型: 可以根據(jù)type進行類型檢查:

    2024年02月13日
    瀏覽(22)
  • nlohmann json:通過items遍歷object/array

    編譯運行輸出: key: one, value: 1 key: two, value: 2 key: 0, value: 1 key: 1, value: 2 key: 2, value: 4 key: 3, value: 8 key: 4, value: 16? 可以看到對于object可以通過key()和value()拿到鍵值對 對

    2024年02月13日
    瀏覽(22)
  • nlohmann json:實現(xiàn)map和struct的互轉(zhuǎn)

    可以借助json實現(xiàn)map和struct的互轉(zhuǎn):

    2024年02月11日
    瀏覽(27)
  • c++ nlohmann/json 及修改json文件中個別關(guān)鍵字
JSON的三種格式https://blog.csdn.net/daxiong0816/article/details/125132404

    c++ nlohmann/json 及修改json文件中個別關(guān)鍵字 JSON的三種格式https://blog.csdn.net/daxiong0816/article/details/125132404

    (2條消息) nlohmann json使用_nlohmann::json_蝸牛單行道的博客-CSDN博客json為JavaScript object notation 是一種數(shù)據(jù)格式,逐漸替換掉了傳統(tǒng)的xml 。json數(shù)據(jù)格式的屬性名稱和字符串值需要用雙引號引起來,用單引號或者不用引號會導(dǎo)致讀取數(shù)據(jù)錯誤。json的另外一個數(shù)據(jù)格式是數(shù)組,和jav

    2024年02月08日
    瀏覽(18)
  • C++ vs2015編譯json和protobuf報錯nlohmann::detail::static_constnlohmann::detail::to_json_fn::value‘

    C++ vs2015編譯json和protobuf報錯nlohmann::detail::static_constnlohmann::detail::to_json_fn::value‘

    補充:這個問題也會導(dǎo)致protobuf編譯和使用報錯,按照本方法修復(fù)后問題解決 只要引入項目中的 #include “nlohmann/json.hpp” 用vs2015編譯就會報錯,甚至用vs2022的Visual Studio 2015 (v140)工具集編譯也會報同樣的錯誤,錯誤信息如下: 參考這篇博客“JSON for Modern C++ vs2015 企業(yè)版和專業(yè)

    2024年02月05日
    瀏覽(41)
  • package.json 備忘清單_開發(fā)速查表分享

    重要字段 介紹 name version Tips 安裝 name 包 信息類字段 description license keywords 鏈接類字段 homepage repository bugs 項目維護類字段 author contributors 文件類信息 files main man directories bin types 打包包字段 esnext module browser exports 導(dǎo)出 exports 導(dǎo)出子路徑中的模塊 exports 簡寫 (. 唯一的導(dǎo)出) 條

    2023年04月17日
    瀏覽(24)
  • c語言-json開源庫cJSON的使用

    c語言-json開源庫cJSON的使用

    一、cJSON的介紹 ??? cJSON是一個開源的JSON解析器,用于解析JSON數(shù)據(jù)。它是由純C語言實現(xiàn),因此跨平臺性好,移植簡單。 下載地址: 二、移植方法 ??? cJSON只有一個cjson.c和cjson.h文件,可以很方便地集成到其他項目中。cJSON支持將JSON數(shù)據(jù)解析為cJSON對象,也支持將cJSON對象轉(zhuǎn)

    2024年04月29日
    瀏覽(15)
  • 【智能車】上海交通大學AuTop戰(zhàn)隊開源算法提綱備忘

    【智能車】上海交通大學AuTop戰(zhàn)隊開源算法提綱備忘

    本文是作者在學習上海交通大學AuTop戰(zhàn)隊開源算法時列的提綱備忘,并做了很多資料的鏈接,像是一個目錄,分享給大家一起學習, 如有侵權(quán),聯(lián)系刪除; 參考:https://github.com/SJTU-AuTop 1. 固定閾值二值化 2. 大津法(OTSU)閾值 3. 自適應(yīng)閾值 總結(jié): 1. “迷宮法”進行邊線提取

    2024年02月02日
    瀏覽(27)
  • 使用 pnpm + Monorepo + rollup 實現(xiàn)Psd、Sketch 轉(zhuǎn) json開源庫, 該json支持作為fabric.js畫布模板

    最近使用 pnpm + Monorepo + rollup 開源了一個工具庫 tojson.js tojson.js 是一個支持解析 Psd、Sketch 轉(zhuǎn) json 的類庫, 該 json 滿足 fabric.js 畫布渲染的數(shù)據(jù)格式. 后期也會增加 ppt、pdf 格式 為什么要使用 pnpm + Monorepo ? 不止開源了一個工具庫 tojson.js, 也開源了 sketchtojson, pst-json.js 庫, tojson.j

    2024年01月20日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包