2012-11-29 56 views
4

我有一個示例json記錄,我已經通過boost json解析器解析並保存它以提升屬性樹以獲取所有的鍵值pairs.ia以下代碼我能夠獲得第一個樹的屬性,但我怎樣才能獲得第二個屬性值?當我嘗試獲得它時,它顯示我例外是「沒有這樣的節點」。增強屬性樹不能檢索解析json後的記錄

如果我迭代樹,那麼它會顯示我所有的鍵。我不明白它有什麼問題。 REF:http://www.boost.org/doc/libs/1_52_0/doc/html/boost_propertytree/accessing.html

json string := {"type":"net.aggregate","post.source":"1209010340", "val":1000} 

代碼:

boost::property_tree::ptree pt;  
read_json("jSon string object", pt); 
cout << pt.get("type", ""); // working 
cout << pt.get("post.source", "") // showing error ....` 
+0

嘗試發送略有不同的json,看它是否工作:...,「post」:{「source」:「1209010340」},... – bobah

+0

@Lain,請不要將您的(幾個)編輯標記爲*修正了格式錯誤*當你真的*做的是大寫幾個字母。 – Sheridan

+0

@Sheridan我應該如何標籤?我發現字母小寫非常煩人。 – Lain

回答

1

由於升壓property_tree使用點以分離不同的對象。當您請求"post.source"時,get函數查找對象post屬性source

+0

感謝Joachim Pileborg, 請給我建議我如何回收它的價值? –

+0

@DhimantJayswal或者將它重命名爲無點,或者修改JSON以包含「帖子」對象:'...「帖子」:{「source」:...} ..# –

+0

Json格式對我來說是固定的,所以我不能改變json記錄的合成。 –