2015-09-19 2 views
1

Так что я работаю над назначением, и мне нужно проанализировать несколько свойств в json для отправки по сети. Вот как должно выглядеть последнее значение.Boost json parser с ptree внутри ptree

{"__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, псевдоним ПгвЬЫате, LastName. функция encode возвращает ptree, но когда я перехожу к write_json, кажется, что он не знает, как обращаться с ptree в ptree. Я попытался разборе myPlayer в JSON и кладя, что в дереве, но это дает мне это

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

так, как я получаю толчок для разбора Ptree таким образом, что он может сделать Ptree в Ptree или Doesnt добавить escapes для кавычек и не помещает значение свойства Identity в виде строки? Спасибо

+0

Nevermind Я понял это, что нужно сделать 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); 

Эти 2 примера оба делают поддерево в Ptree

Смежные вопросы