2013-09-26 77 views
22

如何獲取JSON數組的長度我在C#中使用json.net?在發送SOAP調用之後,我得到一個JSON字符串作爲答案,我使用json.net來解析它。在JSON的獲取數組的長度JSON.Net

例子我:

{"JSONObject": [ 
    {"Id":"ThisIsMyId","Value":"ThisIsMyValue"}, 
    {"Id":"ThisIsMyId2","Value":"ThisIsMyValue2"} 
]} 

我分析它,並在控制檯寫:

var test = JObject.Parse (json); 
Console.WriteLine ("Id: {0} Value: {1}", (string)test["JSONObject"][0]["Id"], (string)test["JSONObject"][0]["Value"]); 

這就像一個魔咒,只有我不知道的長度JSONObject,但我需要在for循環中完成。我只是不知道我怎麼能得到的「測試長度[」的JSONObject「]」

但類似測試[「的JSONObject」。長度將是太容易我猜:(..

回答

39

你可以投的對象爲JArray,然後使用Count屬性,像這樣:

JArray items = (JArray)test["JSONObject"]; 
int length = items.Count; 

然後可以循環的項目如下:

for (int i = 0; i < items.Count; i++) 
{ 
    var item = (JObject)items[i]; 
    //do something with item 
} 

根據ONNO(OP),你也可以使用以下命令:

int length = test["JSONObject"].Count(); 

但是,我沒有親自證實,這將工作

+0

不要你需要轉換爲'JArray'爲那? – svick

+0

我試過了,因爲我看到別的地方。但是爲什麼我沒有嘗試使用Count(),看起來似乎有效。 我很抱歉我的愚蠢:O – Onno

+0

@Onno:你是說Count()有效嗎?如果是這樣,我可以更新答案 – musefan