Я использую 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? Спасибо.