Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON加载到boost变量映射中_Json_Boost - Fatal编程技术网

将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移植它。我会让我的答案,以防有用。

这一事实并不重要:)