【发布时间】:2021-09-08 20:45:49
【问题描述】:
我正在阅读一些信息,我想将其写成json,但是某些键的名称在名称中包含点。我想得到这样的东西:
{
"programs":
{
"tmp.exe" : "D:\\Directory\\Directory",
"foo.exe" : "C:\\Directory"
}
}
这是我的代码:
ptree pt;
ptree name;
name.put(string_name,string_directory);
pt.add_child("programs",name);
但结果如下:
{
"programs":
{
"tmp":
{
"exe" : "D:\\Directory\\Directory"
},
"foo":
{
"exe" : "C:\\Directory"
}
}
}
我小时候就在考虑添加它。但是这段代码根本不起作用
ptree pt;
ptree name;
name.put("",string_name);
pt.add_child("programs",name);
pt.find(string_name).put_value(string_directory);
【问题讨论】:
-
您的键通常应该是带引号的字符串。
{ "programs" : { "temp.exe" : "d:\\Directory\\directory", "foo.exe" : "c:\\Directory" } }。如果这不是你得到的,你可能只是想切换到更好的 JSON 库。 -
Boost 属性树不是最好的 JSON 库,它有很多限制,最好使用专门的 JSON 库
-
从一些有效 JSON开始。您可以使用jsonlint.com 之类的在线网站进行检查。提示:您的 JSON 并不接近有效。
-
为了清楚起见,这只是一个示例。主要问题是我需要在名称中设置一个带点的键。我不能在这个项目中使用除了 boost 之外的库
-
FWIW:我在 boost-propertytree 标签中搜索了“点”(即我在本网站的搜索字段中输入了
[boost-propertytree] dot)。热门歌曲是我为此提出的副本的副本。
标签: c++ json boost boost-propertytree