![](/img/trans.png)
[英]JsonCpp - when having a json::Value object, how can i know it's key name?
[英]How to access the key of a jsoncpp Value
問這個問題我有點愚蠢,但一直無法找到獲得 JSON 值的密鑰的方法。 如果我有 object 的迭代器,我知道如何檢索密鑰。 我也知道operator[]
。 在我的情況下,密鑰不是已知值,因此不能使用get(const char *key)
或operator[]
。 也找不到getKey()
方法。
我的 JSON 看起來像這樣:
{Obj_Array: [{"122":{"Member_Array":["241", "642"]}}]}
對於解析{"122":{"Member_Array":["241", "642"]}}
的代碼段,我想使用get_key()
類似 function 來檢索"122"
,但似乎我必須使用對我來說似乎有點矯枉過正的迭代器。
我可能根本不了解jsoncpp
如何表示 JSON 文件。
首先,您不會在 JsonCPP 中解析的內容。 鍵必須始終用雙引號括起來:
{"Obj_Array": [{"122":{"Member_Array":["241", "642"]}}]}
假設這只是一個疏忽,如果我們添加空格並標記元素:
{
root-> "Obj_Array" : [
elem0-> {
key0-> "122":
val0-> {
key0.1-> "Member_Array" :
val0.1-> [
elem0.1.0-> "241",
elem0.1.1-> "642" ]
}
}
]
}
假設您已設法將數據讀入Json::Value
(我們稱之為root
),每個標記值都可以像這樣訪問:
elem0 = root[0];
val0 = elem0["122"]
val0_1 = val0["Member_Array"];
elem0_1_0 = val0_1[0];
elem0_1_1 = val0_1[1];
您注意到這僅檢索值; 密鑰是先驗已知的。 這並不罕見; 鍵定義數據的模式; 您必須了解它們才能直接訪問這些值。
在您的問題中,您 state 認為這不是一個選項,因為密鑰是未知的。 將語義含義應用於未知鍵可能具有挑戰性,但您已經找到了答案。 如果要獲取鍵值,則必須遍歷封閉的 Json::Value 的元素。
所以,要進入key0
,你需要這樣的東西(未經測試):
elem0_members = elem0.getMemberNames();
key0 = elem0_members[0];
無論如何,這不是生產質量,但我希望它指向正確的方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.