我正在使用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文件? 谢谢。