1

所以我正在处理一项任务,我需要将几个属性解析为 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 属性的值作为字符串?谢谢

4

1 回答 1

0

好的,所以将 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 中创建一个子树。

于 2015-10-18T21:59:28.907 回答