在C++上解析JSON文件并获取主键的所有子字段[已关闭]

brvekthn  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(105)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

4天前关闭。
Improve this question
我使用boost库,需要在C++上解析一些json文件。
例如,对于json(它的一部分):

{
    "media": {
        "Test1": "https://storage.tst",
        "Test2": "https://storage.tst"
    }

}

我想在循环中(可能我会有很多字符串,比如test(test 2,test 4...))用两个级别填充一些动态数组-名称(test)和地址字段(key value)。我想把“media”的每个字段放入这个两级动态数组中。我想用C++11或更早的方法来实现它。

kb5ga3dv

kb5ga3dv1#

使用boost::json可以解析:

json::value sample = json::parse(R"(
    {
        "media": {
            "Test1": "https://storage.tst",
            "Test2": "https://storage.tst"
        }

    })");

现在,您可以迭代如下属性:

for (auto& [k, v] : sample.at("media").as_object()) {
    std::cout << k << " -> " << v << "\n";
}

要将其放入“两级数组”(并不存在),我希望您的意思类似于:Live

std::map<std::string, std::string> not_an_array;
for (auto& [k, v] : sample.at("media").as_object()) {
    not_an_array.emplace(k, v.as_string());
}

fmt::print("not_an_array: {}\n", not_an_array);

打印

not_an_array: {"Test1": "https://storage.tst", "Test2": "https://storage.tst"}

使用的文件:valueatobjectas_string

相关问题