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

如何在boost property tree中编写嵌套列表并将其导出为json格式

Boost 生成嵌套JSON数组实现方案

你需要的{"matrix": [[0.0, 0.0], [0.0, 0.0]]}结构可以通过两种Boost常用JSON处理组件实现,以下是具体代码:

使用Boost.PropertyTree实现

你查阅的json_parser属于Boost.PropertyTree组件,该组件本身不是专门为JSON设计,数组统一以空字符串作为子节点key的形式存储,嵌套数组只要嵌套遵循该规则构造即可:

#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

using namespace boost::property_tree;

int main() {
    ptree root;
    ptree matrix_arr; // 存储外层数组
    
    // 构造2行2列的嵌套数组
    for (int i = 0; i < 2; ++i) {
        ptree row_arr; // 存储内层每行的数组
        for (int j = 0; j < 2; ++j) {
            ptree val_node;
            val_node.put_value(0.0);
            // 数组元素固定使用空字符串作为key
            row_arr.push_back(std::make_pair("", val_node));
        }
        // 外层数组的元素是内层数组,同样用空字符串作为key
        matrix_arr.push_back(std::make_pair("", row_arr));
    }
    
    root.add_child("matrix", matrix_arr);
    // 第三个参数设为false,避免数字被自动加引号
    write_json(std::cout, root, false);
    return 0;
}

使用Boost.JSON实现

如果你的项目允许使用专门的JSON处理组件,更推荐用Boost.JSON,原生支持所有JSON类型,代码更简洁,没有额外适配成本:

#include <iostream>
#include <boost/json.hpp>

using namespace boost::json;

int main() {
    object root;
    array matrix;
    
    for (int i = 0; i < 2; ++i) {
        array row;
        row.emplace_back(0.0);
        row.emplace_back(0.0);
        matrix.emplace_back(std::move(row));
    }
    
    root["matrix"] = std::move(matrix);
    // 直接序列化输出
    std::cout << serialize(root) << std::endl;
    return 0;
}

内容的提问来源于stack exchange,提问作者HiroIshida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:36:03