Guide for using the meojson C++ JSON library in MaaFramework. Use when writing code that involves JSON parsing, serialization, struct jsonization (MEO_JSONIZATION), json::value manipulation, ext::jsonization custom type support, or logging with json values.
meojson is a header-only, zero-dependency C++ JSON library. In MaaFramework it lives at source/MaaUtils/include/meojson/ and is included via <meojson/json.hpp>.
| Type | Description |
|---|---|
json::value | Universal JSON value (null/bool/number/string/array/object) |
json::array | JSON array, wraps std::vector<json::value> |
json::object | JSON object, wraps std::map<std::string, json::value> |
#include <meojson/json.hpp>
// From string — returns std::optional<json::value>
auto opt = json::parse(str);
if (!opt) { /* parse failed */ }
// From file
auto opt = json::open("/path/to/file.json");
// JSONC (with comments)
auto opt = json::parsec(str);
// From istream
auto opt = json::parse(istream, /*check_bom=*/false, /*with_comments=*/false);
MaaFramework pattern — always check parse result and type:
auto ov_opt = json::parse(pipeline_override);
if (!ov_opt) {
LogError << "failed to parse" << VAR(pipeline_override);
return MaaInvalidId;
}
if (!ov_opt->is_object()) {
LogError << "json is not object" << VAR(pipeline_override);
return MaaInvalidId;
}
auto& obj = ov_opt->as_object();