/
githubmirror
/
json
Обзор
Документация
Войти
/
githubmirror
/
json
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/module_cpp20/main.cpp
59 строк
2 KB
Niels Lohmann
Extend value to arrays when using JSON pointers (#5223)
02 июл 2026, 07:35
Не верифицирован
02 июл 2026, 07:35
ca49ab6
Код
Авторство
О чём код?
// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ (supporting code) // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2026 Niels Lohmann <https://nlohmann.me> // SPDX-License-Identifier: MIT import std; import nlohmann.json; using namespace nlohmann::literals; // Exercise the surface exported by the nlohmann.json module so that a missing // or broken export is caught at compile time. // // Standard-library facilities are pulled in via `import std;` rather than // textual `#include`s: mixing `import` with textual standard headers does not // compile under GCC's C++20 modules implementation, whereas `import std;` works // across GCC, Clang, and MSVC. This requires C++23 and CMake's (experimental) // import-std support; see CMakeLists.txt. int main() { // basic_json / json: parsing and value access nlohmann::json j = nlohmann::json::parse(R"({"a": 1, "list": [1, 2, 3]})"); const int a = j["a"].get<int>(); // json_pointer and operator""_json_pointer nlohmann::json_pointer<std::string> ptr = "/list/2"_json_pointer; const int last = j[ptr].get<int>(); // operator""_json literal const nlohmann::json lit = R"([1, 2, 3])"_json; // ordered_json nlohmann::ordered_json oj; oj["b"] = 2; const int b = oj["b"].get<int>(); // ordered_map alias nlohmann::ordered_map<std::string, int> m; m["x"] = 1; // adl_serializer (reference the exported template) using serializer = nlohmann::adl_serializer<int, void>; static_cast<void>(sizeof(serializer)); // to_string const std::string dumped = nlohmann::to_string(j); // operator<< (hidden friend, reached via ADL through the module) std::ostringstream os; os << j << oj << lit; // use every result so the references cannot be optimized away return (a == 1 && last == 3 && b == 2 && lit.size() == 3 && m.size() == 1 && !dumped.empty() && !os.str().empty()) ? 0 : 1; }