我正在尝试在json中创建一个数组节点,输出如下:
{
node: ["12", "13"]
}
但是当数组为空时,它将输出:
{
node: ""
}
这不是我想要的,我需要这个:
{
node: []
}
我该怎么做? 而且我不需要围绕数字的双引号(“”)。 有人可以帮忙吗?
我的代码如下:
boost::property_tree::ptree pt;
boost::property_tree::ptree array;
for (vector<int>::const_iterator iter = v.begin();
iter != v.end();
++iter)
{
boost::property_tree::ptree node;
node.put("code", *iter);
array.push_back(std::make_pair("", node));
}
pt.add_child("array", array);
感谢您的关注。
答案 0 :(得分:4)
Boost没有JSON库。它有一个属性树(思考:分层配置格式)库。
它明确指出有些事情没有得到很好的支持:
这适合Boost PropertyTree的预期应用领域。如果它不适合您的问题,请使用JSON库。
答案 1 :(得分:1)
这个答案假定,在稍后阶段,您将创建属性树的字符串。我发现了这种情况的一些解决方法。 而不是创建
{
"node": ""
}
你可以轻松创建
{
"node": [""]
}
做
ptree parent_tree, children, child;
children.push_back(std::make_pair("", child));
pt.add_child("node", children);
稍后,如果您有json的字符串表示形式,则可以用[""]
替换字符[]
。为此你只需要做:
#include <boost/algorithm/string.hpp>
boost::replace_all(json_string, "[\"\"]", "[]");
这样,您最终会得到一个包含
的字符串{
"node": []
}
希望这有帮助。