簡體   English   中英

如何訪問 jsoncpp 值的鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM