lokinet/vendor/nlohmann/doc/faq.md
2019-03-02 02:32:18 +00:00

1.4 KiB

FAQ

Parsing

How can I parse from a string?

json j = json::parse("[1,2,3,4]");

You can pass string literals (as above), std::string, const char* or byte containers such as std::vector<uint8_t>.

How can I parse from a file?

std::ifstream i("your_file.json");
json j = json::parse(i);

Serialization

How can I serialize a JSON value

std::cout << j << std::endl;

This is equivalent to

std::string s = j.dump();
std::cout << s << std::endl;

How can I pretty-print a JSON value

std::cout << std::setw(4) << j << std::endl;

This is equivalent to

std::string s = j.dump(4);
std::cout << s << std::endl;

The number 4 denotes the number of spaces used for indentation.

Iterating

How can I iterate over a JSON value?

for (json& val : j)
{
    // val is a reference for the current value
}

This works with any JSON value, also primitive values like numbers.

How can I access the keys when iterating over a JSON object?

for (auto it = j.begin(); it != j.end(); ++it)
{
    // the value
    json &val = it.value();
    
    // the key (for objects)
    const std::string &key = it.key();
}

You can also use an iteration wrapper and use range for:

for (auto it : json::iteration_wrapper(j))
{
    // the value
    json &val = it.value();
    
    // the key (for objects)
    const std::string &key = it.key();
}