2013-09-26 92 views
22

Làm thế nào tôi có thể nhận được chiều dài của một mảng JSON tôi nhận được bằng cách sử dụng json.net trong C#? Sau khi gửi một cuộc gọi SOAP, tôi nhận được một chuỗi JSON là câu trả lời, tôi sử dụng json.net để phân tích nó.Lấy chiều dài của mảng JSON.Net

Ví dụ về json tôi nhận:

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

Và tôi phân tích nó và viết nó trong giao diện điều khiển:

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

này hoạt động giống như một câu thần chú, duy nhất tôi không biết chiều dài của JSONObject, nhưng tôi cần thực hiện nó trong vòng lặp for. Tôi chỉ không có ý tưởng làm thế nào tôi có thể nhận được chiều dài của "thử nghiệm [" JSONObject "]"

Nhưng cái gì đó như thử nghiệm [ "JSONObject"]. Chiều dài sẽ là quá dễ dàng Tôi đoán :(..

Trả lời

39

Bạn có thể cast đối tượng đến một JArray và sau đó sử dụng Count tài sản, như vậy:

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

Bạn có thể sau đó lặp các mặt hàng như sau:

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

.210

Theo Onno (OP), bạn cũng có thể sử dụng như sau:

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

Tuy nhiên, tôi đã không đích thân khẳng định rằng điều này sẽ làm việc

+0

Anh không cần phải cast cho 'JArray' cho cái đó? – svick

+0

Tôi đã thử điều đó, như tôi đã thấy ở một nơi khác. Nhưng dù sao tôi không thử Count() thay vào đó, những gì dường như làm việc. Tôi rất tiếc vì sự ngu ngốc của tôi: O – Onno

+0

@Onno: Bạn có nói rằng 'Count()' hoạt động không? Nếu vậy tôi có thể cập nhật câu trả lời – musefan