2013-09-05 96 views
1

我有一個簡單的JSON文件,我需要得到一個標記的值,我試過使用SelectToken,但問題是元素的名稱是動態的。這是我的JSON文件Json.Net:使用SelectToken在不知道元素名稱的情況下獲取值?

{ 
    "name": "testdata", 
    "items": { 
     "myItemName": { 
      "located": true 
     } 
    } 
} 

我需要的「定位」(上)的值,如果你看到的元素名稱「myItemName」,這是動態的,而不是固定的。所以我嘗試使用SelectToken的點符號。

我想出了類似的話,但沒有奏效 - 問題是,[0]

 bool located = (bool)jsonObject.SelectToken("items.[0].located"); 

內的物品,可以有超過1個動態元素,因此,例如,這是有效。

{ 
     "name": "testdata", 
     "items": { 
      "myItemName": { 
       "located": true 
      }, 
      "myOtherItemName": { 
       "located": true 
      } 
     } 
    } 

所以上面看,你可以看到我有「myItemName」和「myOtherItemName」,我想用somekind的的foreach

這是在所有獲得的每一個「位於」的價值觀可能嗎?使用SelectToken?

感謝

回答

4

試試這個:

string json = @" 
{ 
    ""name"": ""testdata"", 
    ""items"": { 
     ""myItemName"": { 
      ""located"": true 
     }, 
     ""myOtherItemName"": { 
      ""located"": true 
     } 
    } 
}"; 

JObject jsonObject = JObject.Parse(json); 

foreach (JProperty prop in jsonObject.SelectToken("items")) 
{ 
    string name = prop.Name; 
    bool value = (bool)prop.Value.SelectToken("located"); 
    Console.WriteLine(name + " = " + value); 
} 

輸出:

myItemName = True 
myOtherItemName = True 
相關問題