欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?JSON庫?nlohmann::basic_json::accept的用法解析

 更新時間:2023年06月19日 14:41:54   作者:泡沫o0  
nlohmann::basic_json::accept 是 Nlohmann JSON 庫中的一個方法,它用于檢查一個字符串是否可以解析為有效的 JSON,這篇文章主要介紹了C++?JSON庫nlohmann::basic_json::accept的用法,需要的朋友可以參考下

簡介

nlohmann::basic_json::accept 是 Nlohmann JSON 庫中的一個方法,它用于檢查一個字符串是否可以解析為有效的 JSON。

方法的簽名如下:

bool accept(const string_t& input);

其中 input 是要檢查的字符串。

如果字符串可以解析為有效的 JSON,那么此方法會返回 true,否則返回 false

以下是一個使用示例:

#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
    std::string jsonString = R"({"key": "value"})";
    std::string notJsonString = R"(Not a json string)";
    bool jsonStringIsValid = json::accept(jsonString);
    bool notJsonStringIsValid = json::accept(notJsonString);
    std::cout << "jsonStringIsValid: " << jsonStringIsValid << '\n';
    std::cout << "notJsonStringIsValid: " << notJsonStringIsValid << '\n';
    return 0;
}

在這個示例中,jsonStringIsValid 會被設置為 true,因為 jsonString 是一個有效的 JSON 字符串,而 notJsonStringIsValid 會被設置為 false,因為 notJsonString 不是一個有效的 JSON 字符串。

nlohmann::basic_json::accept 官網介紹

// (1)
template<typename InputType>
static bool accept(InputType&& i, const bool ignore_comments = false);
// (2)
template<typename IteratorType>
static bool accept(IteratorType first, IteratorType last, const bool ignore_comments = false);

檢查輸入是否為有效的 JSON。

  • 從兼容的輸入中讀取。
  • 從一對字符迭代器中讀取。

迭代器的 value_type 必須是大小為 1、2 或 4 字節(jié)的整型,分別被解釋為 UTF-8、UTF-16 和 UTF-32。

與 parse 函數(shù)不同,此函數(shù)在遇到無效的 JSON 輸入(即,解析錯誤)時既不拋出異常,也不創(chuàng)建診斷信息。

模板參數(shù)

InputType

兼容的輸入,例如:

  • 一個 std::istream 對象
  • 一個 FILE 指針(不能為 null)
  • 一個 C 風格的字符數(shù)組
  • 一個指向單字節(jié)字符的空終止字符串的指針
  • 一個 std::string
  • 一個對象 obj,對于該對象,begin(obj) 和 end(obj) 產生一對有效的迭代器。

IteratorType

兼容的迭代器類型,例如:

  • 一對 std::string::iterator 或 std::vector<uint8_t>::iterator
  • 一對指針,如 ptr 和 ptr + len

參數(shù)

  • i (in): 要解析的輸入。
  • ignore_comments (in): 是否應忽略注釋并將其視為空格(true)或產生解析錯誤(false);(可選,默認為 false)
  • first (in): 字符范圍的開始迭代器
  • last (in): 字符范圍的結束迭代器

返回值

輸入是否為有效的 JSON。

異常安全性

強保證:如果拋出異常,JSON 值不會有任何改變。

復雜性

輸入長度線性。解析器是一個預測性的 LL(1) 解析器。

注釋

(1) UTF-8 字節(jié)順序標記會被靜默忽略。

運行時斷言:通過運行時斷言來執(zhí)行傳遞的 FILE 指針不能為 null 的前提條件。

示例

#include <iostream>
#include <iomanip>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
    // a valid JSON text
    auto valid_text = R"(
    {
        "numbers": [1, 2, 3]
    }
    )";
    // an invalid JSON text
    auto invalid_text = R"(
    {
        "strings": ["extra", "comma", ]
    }
    )";
    std::cout << std::boolalpha
              << json::accept(valid_text) << ' '
              << json::accept(invalid_text) << '\n';
}

另請參閱

  • parse - 從兼容的輸入反序列化
  • operator>> - 從流反序列化

版本歷史

  • 在版本 3.0.0 中添加。
  • 通過 ignore_comments 忽略注釋在版本 3.9.0 中添加。

棄用

重載 (2) 替換了將一對迭代器作為其第一個參數(shù)的 accept 調用,該調用在版本 3.8.0 中已被棄用。這個重載將在版本 4.0.0 中被移除。請將所有像 accept({ptr, ptr+len}, …); 的調用替換為accept(ptr, ptr+len, …);

到此這篇關于C++ JSON庫 nlohmann::basic_json::accept的用法的文章就介紹到這了,更多相關C++  nlohmann::basic_json::accept內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++鏈表類的封裝詳情介紹

    C++鏈表類的封裝詳情介紹

    這篇文章主要介紹了C++鏈表類的封裝,文章基于C++的相關資料展開主題的詳細內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • C++ 標準模板類詳解

    C++ 標準模板類詳解

    今天小編就為大家分享一篇關于C++標準模板類的介紹與使用講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • c++輸出斐波那契數(shù)列示例分享

    c++輸出斐波那契數(shù)列示例分享

    這篇文章主要介紹了c++輸出斐波那契數(shù)列示例,需要的朋友可以參考下
    2014-03-03
  • C語言柔性數(shù)組的實現(xiàn)示例

    C語言柔性數(shù)組的實現(xiàn)示例

    柔性數(shù)組既數(shù)組大小待定的數(shù)組, C語言中結構體的最后一個元素可以是大小未知的數(shù)組,本文就來介紹一下柔性數(shù)組的用法,感興趣的可以了解一下
    2024-03-03
  • C++?正則表達式的應用詳解

    C++?正則表達式的應用詳解

    正則表達式(regular?expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等
    2021-11-11
  • Qt物聯(lián)網管理平臺之實現(xiàn)告警短信轉發(fā)

    Qt物聯(lián)網管理平臺之實現(xiàn)告警短信轉發(fā)

    系統(tǒng)在運行過程中,會實時采集設備的數(shù)據(jù),當采集到的數(shù)據(jù)發(fā)生報警后,可以將報警信息以短信的形式發(fā)送給指定的管理員。本文將利用Qt實現(xiàn)告警短信轉發(fā),感興趣的可以嘗試一下
    2022-07-07
  • C++實現(xiàn)俄羅斯方塊(linux版本)

    C++實現(xiàn)俄羅斯方塊(linux版本)

    這篇文章主要為大家詳細介紹了linux版本C++實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C語言數(shù)據(jù)結構之棧簡單操作

    C語言數(shù)據(jù)結構之棧簡單操作

    這篇文章主要介紹了C語言數(shù)據(jù)結構之棧簡單操作的相關資料,需要的朋友可以參考下
    2017-06-06
  • C++ xxx_cast實現(xiàn)轉換代碼實例解析

    C++ xxx_cast實現(xiàn)轉換代碼實例解析

    這篇文章主要介紹了C++xxx_cast轉換代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • C++ namespace相關語法實例分析

    C++ namespace相關語法實例分析

    這篇文章主要介紹了C++ namespace相關語法實例分析,對C++初學者有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08

最新評論