|
|
| Line 1: |
Line 1: |
| − | Capable of error checking and basic error recovery. Also have optional schema validation. Located at lib/JsonNode.h.
| + | {{Template:MovedToWebpage|https://vcmi.eu/developers/Code_Structure/#json-parser-and-writer}} |
| − | Currently supports only local encoding - no conversion from unicode.
| |
| − | | |
| − | Main class JsonNode represents one "node" from Json file (array, string, etc.).
| |
| − | Basic usage:
| |
| − | <syntaxhighlight lang="cpp">
| |
| − | const JsonNode node("some_config.json");
| |
| − | 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>
| |
| − | | |
| − | ===File formats===
| |
| − | *[[Artifact Format]]
| |
| − | *[[Creature Format]]
| |
| − | *[[Bonus Format]]
| |
| − | *[[Town Format]]
| |