使用boost将json解析的对象存储到地图C++中

阿玛拉

您好,我正在使用boost 库 C++来解析具有以下形式的 json 对象:

{ "ser" : ["ser1","ser2"] , "ver" : ["ver1","ver2"] }

使用 pt::read_json(jsonobj, config) 现在我希望将不同的解析 json 对象部分(键和值)存储到字符串映射和字符串向量中。

有什么想法吗?

大警告:属性树不是 JSON 库。它有很大的局限性。

也就是说,如果您所希望的只是一个字符串(向量)的映射,那么这可能足以满足您的需求。

让我们为地图类型做一个简写:

using VMap = std::map<std::string, std::vector<std::string> >;

现在,让我们使用函数将属性树转换为 VMap:

VMap to_map(ptree const& pt) {
    VMap m;
    for (auto& [k, v] : pt) {
        auto& m_entry = m[k];
        for (auto& [k, v] : boost::make_iterator_range(v.equal_range(""))) {
            m_entry.push_back(v.get_value<std::string>());
        }
    }
    return m;
}

添加一个print函数我们可以演示一下:

住在 Coliru

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

using boost::property_tree::ptree;
using VMap = std::map<std::string, std::vector<std::string> >;

VMap to_map(ptree const&);
void print(VMap const&);

int main() {

    ptree config;
    {
        std::istringstream jsonobj(R"({ "ser" : ["ser1","ser2"] , "ver" : ["ver1","ver2"] })");
        read_json(jsonobj, config);
    }

    auto m = to_map(config);
    print(m);
}

VMap to_map(ptree const& pt) {
    VMap m;
    for (auto& [k, v] : pt) {
        auto& m_entry = m[k];
        for (auto& [k, v] : boost::make_iterator_range(v.equal_range(""))) {
            m_entry.push_back(v.get_value<std::string>());
        }
    }
    return m;
}

void print(VMap const& vm) {
    for (auto& [k, vv] : vm) {
        std::cout << k << ": {";
        for (auto& v: vv)
            std::cout << " " << v;
        std::cout << " }\n";
    }
}

印刷

ser: { ser1 ser2 }
ver: { ver1 ver2 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将每个解析的JSON值存储到数组中

将地图对象存储在数组中

如何将JSON输出转换为c#对象并将其存储到数组中

如何使用RestKit将嵌套的JSON对象存储到Core Data中

将字符串存储到JSON对象python中

将C#对象存储到AutoCAD实体的XRecord中

在地图C ++中存储对象引用

如何将地图或json对象存储为neo4j中的属性?

如何使用Flutter中的json解析的嵌套地图列表中的函数创建对象

将任意嵌套的JSON对象解析/导出到Haskell中的地图

如何使用php将json值存储到数组中?

使用Angular将JSon文件解析/绑定到Table中

使用 C API 将简单的 JSON 对象插入到 SQLite TEXT 列中

如何使用c#而不是数组将JSON对象列表序列化到文件中

如何将存储在json文件中的td类存储到html表中(使用Ajax)

将新值存储到 JSON 中

将Golang JSON存储到Postgresql中

将JSON数据存储到变量中

熊猫将字典存储到json中

如何使用C#在Unity中解析复杂的JSON对象

将STL映射存储到Boost ConstBufferSequence中

如何将Ajax JSON对象存储到全局变量中以在函数外部访问

将JSON数据对象存储到ASP.NET MVC(实体框架)中的数据库

是否可以通过某种方式将JSON对象直接存储到DOM中?

使用dart在SharedPreference中存储对象或地图列表

将块对象存储在目标C中

将JSON对象存储在JSON对象的属性中

如何将Outlook电子邮件搜索结果存储到IEnumerable对象(C#)中

iOS如何将C ++对象存储到用作表视图数据源的NSArray中