使用boost :: property_tree :: ptree生成错误的JSON

时间:2020-03-17 07:35:18

标签: c++ json boost boost-propertytree

我正在使用boost :: property_tree :: ptree添加数据并创建JSON文件。以下是我编写的递归代码-

using Strings = vector<string>;
Strings _headers;
map<string, Strings>        _subHeaders;
namespace pt = boost::property_tree;

void flushHeader(pt::ptree& headersNode, const Strings& headers) const {
    for(auto& header : headers) {
        pt::ptree headerNode;
        pt::ptree subHeaderNode;
        pt::ptree subHeaderObjNode;
        headerNode.put(header, "");
        if(_subHeaders.find(header) != _subHeaders.end()) {
            flushHeader(subHeaderObjNode, _subHeaders.find(header)->second);
            subHeaderNode.push_back(make_pair("", subHeaderObjNode));
            headerNode.put_child(pt::ptree::path_type(header, '|'), subHeaderNode);
        }
        headersNode.push_back(make_pair("", headerNode));
    }   
}


void flushData(pt::ptree& parent) const {
pt::ptree headersNode;
flushHeader(headersNode, _headers);
parent.put_child("Headers", headersNode);
}

使用上述代码创建的JSON文件是这样的-

                   "Headers": [
                        {
                            "A": ""
                        },
                        {
                            "B": [
                                [
                                    {
                                        "X": ""
                                    },
                                    {
                                        "Y": ""
                                    }
                                ]
                            ]
                        }
                    ]

有两个括号-值B后面的[,而理想情况下只应出现一个[。所以我希望我的JSON看起来像这样-

                       "Headers": [
                            {
                                "A": ""
                            },
                            {
                                "B": [
                                        {
                                            "X": ""
                                        },
                                        {
                                            "Y": ""
                                        }
                                ]
                            }
                        ]

我希望我已经清楚地解释了这个问题。我可以对代码进行哪些更改以获取所需的JSON文件? 谢谢。

0 个答案:

没有答案