mirror of
https://github.com/nlohmann/json.git
synced 2026-08-22 00:53:18 +00:00
* Reformat parser_callback_t example with astyle The file uses "json & /*parsed*/" in three lambda parameter lists, which astyle rewrites to "json& /*parsed*/" per --align-reference=type. The drift went unnoticed because CI never format-checked the documentation examples; "make pretty" does cover them. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Format-check the documentation examples in CI The examples live in docs/mkdocs/docs/examples, but both format checks still referenced the long-gone docs/examples path: - check_amalgamation.yml passed it to find, which printed an error for the missing path and carried on, so astyle only ever saw include and tests. The step still exited 0. - ci.cmake globbed it into INDENT_FILES, and a GLOB_RECURSE over a missing directory silently yields nothing, so the ci_test_amalgamation target skipped the examples too. Either way the 231 example files have never been format-checked. Point both at the real path, and guard the workflow with an explicit directory check so a future rename fails the job instead of quietly shrinking the file list again. Also drop the dead docs/examples/** path filter from publish_documentation.yml; docs/mkdocs/** already covers the examples. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>
48 lines
1.6 KiB
C++
48 lines
1.6 KiB
C++
#include <iostream>
|
|
#include <nlohmann/json.hpp>
|
|
|
|
using json = nlohmann::json;
|
|
|
|
int main()
|
|
{
|
|
// a JSON text with an array and a number inside an object
|
|
auto text = R"({"IDs": [116, 943], "Width": 800})";
|
|
|
|
// discard the array when the parser reads its opening bracket
|
|
json j_array_start = json::parse(text, [](int /*depth*/, json::parse_event_t event, json& /*parsed*/)
|
|
{
|
|
return event != json::parse_event_t::array_start;
|
|
});
|
|
|
|
// discard the same array when the parser reads its closing bracket
|
|
json j_array_end = json::parse(text, [](int /*depth*/, json::parse_event_t event, json& /*parsed*/)
|
|
{
|
|
return event != json::parse_event_t::array_end;
|
|
});
|
|
|
|
// discard the number, but keep its key
|
|
json j_value = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & parsed)
|
|
{
|
|
return !(event == json::parse_event_t::value && parsed == json(800));
|
|
});
|
|
|
|
// discard the key of the number
|
|
json j_key = json::parse(text, [](int /*depth*/, json::parse_event_t event, json & parsed)
|
|
{
|
|
return !(event == json::parse_event_t::key && parsed == json("Width"));
|
|
});
|
|
|
|
// discard the top-level object
|
|
json j_root = json::parse(text, [](int /*depth*/, json::parse_event_t event, json& /*parsed*/)
|
|
{
|
|
return event != json::parse_event_t::object_end;
|
|
});
|
|
|
|
// in every case, the discarded value is removed together with its key
|
|
std::cout << j_array_start << '\n'
|
|
<< j_array_end << '\n'
|
|
<< j_value << '\n'
|
|
<< j_key << '\n'
|
|
<< j_root << '\n';
|
|
}
|