2015-09-19 146 views
1

因此,我正在处理一项任务,并且需要将几个属性解析为json以通过网络发送。这是最终的价值应该是什么样子。用ptree中的ptree提升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,别名,名字,姓氏一类。编码函数返回一个ptree,但是当我去write_json看起来它不知道如何处理ptree中的ptree。 我试图解析myPlayer成JSON和puting树中的,但它给了我这个

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

让我怎么去推动解析ptree中,使得它可以在一个ptree中做一个ptree中或犯规加转义为引号,并没有把标识属性的值作为一个字符串?谢谢

+0

没关系我想通了,我需要做pt.put(“Identity.sNumbe。 r“,value) – lesyriad

+0

你可以把它转换成正确的答案吗?我认为你的问题具有真正的价值。 – user23573

回答

0

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

输出示例:{ “__type”: “登录:#Messages”, “同一性”: “{\” sNumber \ “:\” 值\“}}

解决方案:

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中的子树