2013-09-26 76 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