Json parser and writer

From VCMI Project Wiki
Revision as of 17:43, 14 March 2013 by Ivan (talk | contribs)
Jump to: navigation, search

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>

File formats