Difference between revisions of "Json parser and writer"

From VCMI Project Wiki
Jump to: navigation, search
m
Line 7: Line 7:
 
const JsonNode node("some_config.json");
 
const JsonNode node("some_config.json");
 
std::string value = node["value"].String();
 
std::string value = node["value"].String();
 +
</syntaxhighlight>
 +
 +
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:
 +
<syntaxhighlight lang="cpp">
 +
int someField = config["someField"].Float();
 +
<someField correctly initialized>
 +
</syntaxhighlight>
 +
Bad:
 +
<syntaxhighlight lang="cpp">
 +
int someField;
 +
if (config["someField"].isNull())
 +
    someField = config["someField"].Float();
 +
else
 +
    someField = 0;
 +
<someField correctly initialized>
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 17:43, 14 March 2013

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