Ошибка JSON генерируется с помощью boost :: property_tree :: ptree - PullRequest
0 голосов
/ 17 марта 2020

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

...