最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?JSON庫(kù)?nlohmann::basic_json::accept的用法解析

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

簡(jiǎn)介

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

方法的簽名如下:

bool accept(const string_t& input);

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

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

以下是一個(gè)使用示例:

#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;
}

在這個(gè)示例中,jsonStringIsValid 會(huì)被設(shè)置為 true,因?yàn)?jsonString 是一個(gè)有效的 JSON 字符串,而 notJsonStringIsValid 會(huì)被設(shè)置為 false,因?yàn)?notJsonString 不是一個(gè)有效的 JSON 字符串。

nlohmann::basic_json::accept 官網(wǎng)介紹

// (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。

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

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

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

模板參數(shù)

InputType

兼容的輸入,例如:

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

IteratorType

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

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

參數(shù)

  • i (in): 要解析的輸入。
  • ignore_comments (in): 是否應(yīng)忽略注釋并將其視為空格(true)或產(chǎn)生解析錯(cuò)誤(false);(可選,默認(rèn)為 false)
  • first (in): 字符范圍的開(kāi)始迭代器
  • last (in): 字符范圍的結(jié)束迭代器

返回值

輸入是否為有效的 JSON。

異常安全性

強(qiáng)保證:如果拋出異常,JSON 值不會(huì)有任何改變。

復(fù)雜性

輸入長(zhǎng)度線性。解析器是一個(gè)預(yù)測(cè)性的 LL(1) 解析器。

注釋

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

運(yùn)行時(shí)斷言:通過(guò)運(yùn)行時(shí)斷言來(lái)執(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';
}

另請(qǐng)參閱

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

版本歷史

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

棄用

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

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

相關(guān)文章

最新評(píng)論

黑山县| 徐水县| 余江县| 伊宁县| 青川县| 锡林郭勒盟| 波密县| 滕州市| 罗江县| 阿瓦提县| 长宁区| 津市市| 天全县| 英吉沙县| 修文县| 密云县| 出国| 屏南县| 闽清县| 漳浦县| 宁德市| 永登县| 前郭尔| 阿勒泰市| 玉林市| 自治县| 凭祥市| 厦门市| 宝坻区| 丘北县| 长葛市| 三明市| 金阳县| 巩义市| 离岛区| 东乡| 瑞丽市| 曲阳县| 高密市| 保德县| 永川市|