Json parser and writer
From VCMI Project Wiki
Capable of error checking and basic error recovery. Also have optional schema validation. Located at lib/JsonNode.h. Currently supports only local encoding - no conversion from unicode.
Main class JsonNode represents one "node" from Json file (array, string, etc.). Basic usage:
const JsonNode node("some_config.json");
std::string value = node["value"].String();
Note: accessing not present in JSON fields is legal and returns correctly initialized default value. There is no need for any checks for entry presence. Good:
int someField = config["someField"].Float();
<someField correctly initialized>
Bad:
int someField;
if (config["someField"].isNull())
someField = config["someField"].Float();
else
someField = 0;
<someField correctly initialized>