如何使用向量中的键为Json对象赋值

时间:2014-03-18 03:23:33

标签: c++ json vector

我想创建一个jsoncpp对象,其键存储在std :: vector中,我希望有一种方法来创建它。请检查下面的样品。谢谢!

std::vector<std::string> keys = {"a", "b", "c"};
item["a"]["b"]["c"] = 1;

std::vector<std::string> keys = {"a", "b", "c", "d"};
item["a"]["b"]["c"]["d"] = 1;

如何使用向量中的键构造项目对象。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以从数组的末尾开始构建JSON到顶部:

std::vector<std::string> keys;
keys.push_back("a");
keys.push_back("b");
keys.push_back("c");
keys.push_back("d");

Json::Value json(Json::objectValue);
json[keys.back()] = 1;

for (int i = keys.size() - 2; i >= 0; i--)
{
    Json::Value tmp(Json::objectValue);
    tmp[keys[i]] = json;
    json = tmp;
}

Json::StyledWriter writer;
std::string text = writer.write(json);