基于nlohmann/json,如何用多个from_json解析嵌套JSON?
关于nlohmann/json嵌套解析的可行性解答
完全可行,nlohmann/json库的自定义from_json函数天然支持这种嵌套调用逻辑,能完美实现你需要的嵌套解析需求。
修改后的代码实现
1. 更新结构体定义
给ConfigA添加ConfigB类型的成员:
typedef struct{ std::map<std::string, bool> m; ConfigB b; // 新增ConfigB成员 } ConfigA; typedef struct{ std::map<std::string, bool> m; } ConfigB;
2. 调整from_json函数逻辑
修改ConfigA的解析函数,内部调用ConfigB的解析函数完成嵌套字段解析:
void from_json(const json &j, ConfigA &c){ // 解析自身的"a"字段到c.m j.at("a").get_to(c.m); // 调用ConfigB的from_json,解析"b"字段到c.b from_json(j, c.b); } void from_json(const json &j, ConfigB &c){ j.at("b").get_to(c.m); }
调用方式
当你执行如下代码时:
nlohmann::json j = /* 你的JSON数据 */; ConfigA config; j.get_to(config);
会自动触发ConfigA的from_json函数,进而内部调用ConfigB的from_json,一次性完成整个JSON的嵌套解析。
注意事项
- 要保证
from_json函数的声明在使用前可见,避免编译报错; - 你的原始JSON末尾多了一个冗余的闭合大括号,实际使用时需要修正为正确格式:
{ "a": { "x": true, "y": false }, "b": { "1": true, "2": false } }
内容的提问来源于stack exchange,提问作者CIsForCookies
相关产品推荐
相关产品推荐

