2013-10-29 57 views
0

在迭代JSON ptree時,我需要一些幫助。這是結構。迭代JSON ptree在提升中

{"drives": [{"busy": false, "eof": false, "density": 88 }]} 

我想要做的是打印鍵和值例如。忙=假。我試過下面的代碼,但沒有輸出。

那麼如何打印密鑰?

在此先感謝您的幫助。

+0

對不起,我沒有任何建設性的意見,但使用JSON和XML的property_tree後,我真的認爲你最好用一個爲閱讀JSON(或XML)而編寫的框架,而不是一個爲了概括閱讀JSON/XML和ini。 – ManicQin

回答

0

我通過一些舊的代碼去了,我找到了辦法

BOOST_FOREACH(ptree::value_type &v, pt.get_child("drives")) 
{ 
    for(auto iter = v.second.begin(); iter!= v.second.end(); ++iter) 
    { 
     std::cout << iter->first << " : " << iter->second.get_value<std::string>() << std::endl; 
    } 

} 

你只需要遍歷「驅動器」,如果你有一個以上的「驅動器」,並在你的JSON例子中,你不有。

在您的代碼中,您嘗試打印v.first和v.data(),但這兩個不包含您認爲他們擁有的數據。

v.first應該持有的鍵名 「鍵名」:{ 「忙」:假的, 「EOF」:假的, 「密度」:88}

它不存在,因爲這值是數組的一部分。

v.data()(如果我沒有弄錯)持有關鍵值:這是一個內部演示文稿,不能用這種方式打印。

我真的認爲你應該嘗試使用不同的JSON框架。

+0

感謝您的輸入。任何想法哪個框架更好。我正在考慮使用jsoncpp。 – Smithy

+0

對不起,我沒有JSON框架的輸入,當我使用property_tree讀取JSON時,它在Ubuntu上有一個錯誤,而不是移動到我嘗試使用property_tree與XML的框架......後來我轉移到了rapid_xml(因爲我已經有太多的XML文件返回到JSON),在http://www.json.org/的底部,您還有其他選擇。但AFAIK jsoncpp是一個不錯的選擇。 – ManicQin