2013-12-10 44 views
5

我們假設我有此JSON文件:使用jsoncppJsonCpp - 當有一個json :: Value對象時,我怎麼知道它是關鍵名字?

[ 
    { 
     "id": 0 
    } 
] 

,我可以這樣做有一個Json::Value對象:在代碼

Json::Value node = root[0u]["id"]; 

OK,別的地方,我得到那個我node對象,我想從中獲取一些信息。我可以得到它的價值,像這樣:

int node_value = node.asInt(); 

但是我怎樣才能得到它的名稱? (即「id」)。它應該是這樣的:

string node_name = node.Name(); //or maybe: 
string node_name2 = node.Key(); 

但我找不到任何類似的東西。幫幫我?我怎樣才能得到一個節點的名字?

回答

4

您可以使用JSON ::值:: getMemberNames()通過名稱進行迭代。

Json::Value value; 
for (auto const& id : value.getMemberNames()) { 
    std::cout << id << std::endl; 
} 
+0

但是,這意味着我必須去的值對象我有(這是我的另一個懸而未決的問題)的母公司。有沒有辦法到達Value對象的父對象? – Rong

+0

就我所知,沒有辦法獲得價值的父母;你爲什麼需要它?你的用例是什麼? – Brandon

+0

我被要求寫的包裝器jsoncpp庫,一種方式遍歷JSON的樹。我認爲jsoncpp已經照顧到了這一點,我只需要知道如何。 – Rong

1

你需要一個向上指針嗎?這不是一個壞主意,但是向上指針添加一個字段會破壞二進制兼容性(which is very important)。所以是的,你需要包裝它。

目前,子值只是一個Value,像任何其他。

相關問題