【问题标题】:Boost json parser with a ptree within a ptree使用 ptree 中的 ptree 提升 json 解析器
【发布时间】:2015-12-16 21:46:45
【问题描述】:

所以我正在处理一项任务,我需要将几个属性解析为 json 以通过网络发送。这是最终值的样子。

{"__type":"Login:#Messages","Identity":{"sNumber":"value","Alias":"value","FirstName":"value","LastName":"value"}}

所以我的代码是

boost::property_tree::ptree pt;
pt.put("__type", "Login:#Messages");
pt.put("Identity", myPlayer.Encode());

myplayer 是一个包含 snumber、alias、firstname、lastname 的类。编码函数返回一个 ptree,但是当我去 write_json 时,它似乎不知道如何处理 ptree 中的 ptree。 我尝试将 myPlayer 解析为 json 并将其放在树中,但它给了我这个

   {"__type":"Login:#Messages","Identity":"{\"sNumber\":\"value\",\"Alias\":\"value\",\"FirstName\":\"value\",\"LastName\":\"value\"}"}

那么我如何获得提升来解析 ptree 以便它可以在 ptree 中执行 ptree 或者不为引号添加转义并且不将 Identity 属性的值作为字符串?谢谢

【问题讨论】:

  • 没关系,我想通了。我需要做 pt.put("Identity.sNumber", value)
  • 你能把它变成一个正确的答案吗?我认为你的问题很有价值。

标签: json boost ptree


【解决方案1】:

好的,所以将 ptree 提升到 json 有点奇怪,但我想出了如何制作子树。

示例输出:{"__type":"Login:#Messages","Identity":"{\"sNumber\":\"value\"}}

解决方案:

boost::property_tree::ptree pt;
pt.put("__type", "Login:#Messages");
pt.put("Identity.sNumber", value);

解决方案 2:

boost::property_tree::ptree pt;
boost::property_tree::ptree subtree;
subtree.put("sNumber", value);
pt.put("__type", "Login:#Messages");
pt.put_child("Identity", subtree);

这两个例子都会在 ptree 中创建一个子树。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 2017-05-27
    • 2017-03-10
    • 1970-01-01
    • 2018-01-30
    • 2023-04-06
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多