You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:31:01