将JSON加载到boost变量映射中
我想:将JSON加载到boost变量映射中,json,boost,Json,Boost,我想: "section" : { "subsection" : { "value" : 33, "add" : "somestring" }, "subparam" : "hello world" } 表示为以下boost::program_options::variables_map: "section.subsection.value" = "33" "section.subsection.add" = "somestring" "
"section" : {
"subsection" : {
"value" : 33,
"add" : "somestring"
},
"subparam" : "hello world"
}
表示为以下boost::program_options::variables_map:
"section.subsection.value" = "33"
"section.subsection.add" = "somestring"
"section.subparam" = "hello world"
最简单的方法是什么?现在我递归遍历JSON树并将键连接到“key.key.key…”中,将这些字符串添加到变量映射中,但有更简单的方法吗?我会这样做:
var o1 = {
"section" : {
"subsection" : {
"value" : 33,
"add" : "somestring"
},
subparam : "hello world"
}
};
var o2 = (function walk(o, path, acc) {
acc = acc || {};
for (var name in o) {
var pd = (path ? path+'.' : '')+name, od = o[name];
if (typeof od === "object") {
walk(od, pd, acc);
} else {
acc[path+'.'+name] = od.toString();
}
}
return acc;
})(o1);
(点击“RunwithJS”并打开控制台)
这假设您不是从一些JSON开始,而是从一个JavaScript对象开始。如果您真的从json开始,那么使用o1=json.parse(yourJSON)代码>
编辑:我现在从您的标签中获取您可能不想使用javascript的信息。然后我让您或其他用户使用boost移植它。我会让我的答案,以防有用。这一事实并不重要:)