#include #include #include #include using json_document = nlohmann::json_document; int main() { std::cout << std::boolalpha; std::vector messages = { R"({"id": 1})", R"({"id": 2, "tag": "x"})", R"({"id": 3})" }; // parse into the same document over and over: its node index and decode // buffer are reused instead of being freed and reallocated for each message json_document doc; std::size_t total = 0; for (const auto& msg : messages) { doc.read(msg); total += doc.root().size(); } std::cout << total << '\n'; // read() can also change what kind of input is owned/borrowed between calls doc.read(std::string(R"({"owned": true})")); std::cout << doc.owns_source() << '\n'; }