1c5f01b2fSopenharmony_ci#include <iostream>
2c5f01b2fSopenharmony_ci#include <nlohmann/json.hpp>
3c5f01b2fSopenharmony_ci
4c5f01b2fSopenharmony_ciusing json = nlohmann::json;
5c5f01b2fSopenharmony_ci
6c5f01b2fSopenharmony_ciint main()
7c5f01b2fSopenharmony_ci{
8c5f01b2fSopenharmony_ci    // an invalid JSON text
9c5f01b2fSopenharmony_ci    std::string text = R"(
10c5f01b2fSopenharmony_ci    {
11c5f01b2fSopenharmony_ci        "key": "value without closing quotes
12c5f01b2fSopenharmony_ci    }
13c5f01b2fSopenharmony_ci    )";
14c5f01b2fSopenharmony_ci
15c5f01b2fSopenharmony_ci    // parse with exceptions
16c5f01b2fSopenharmony_ci    try
17c5f01b2fSopenharmony_ci    {
18c5f01b2fSopenharmony_ci        json j = json::parse(text);
19c5f01b2fSopenharmony_ci    }
20c5f01b2fSopenharmony_ci    catch (json::parse_error& e)
21c5f01b2fSopenharmony_ci    {
22c5f01b2fSopenharmony_ci        std::cout << e.what() << std::endl;
23c5f01b2fSopenharmony_ci    }
24c5f01b2fSopenharmony_ci
25c5f01b2fSopenharmony_ci    // parse without exceptions
26c5f01b2fSopenharmony_ci    json j = json::parse(text, nullptr, false);
27c5f01b2fSopenharmony_ci
28c5f01b2fSopenharmony_ci    if (j.is_discarded())
29c5f01b2fSopenharmony_ci    {
30c5f01b2fSopenharmony_ci        std::cout << "the input is invalid JSON" << std::endl;
31c5f01b2fSopenharmony_ci    }
32c5f01b2fSopenharmony_ci    else
33c5f01b2fSopenharmony_ci    {
34c5f01b2fSopenharmony_ci        std::cout << "the input is valid JSON: " << j << std::endl;
35c5f01b2fSopenharmony_ci    }
36c5f01b2fSopenharmony_ci}
37