2013-09-26 13 views
22

Jak mogę uzyskać długość tablicy JSON, którą otrzymuję za pomocą json.net w języku C#? Po wysłaniu wywołania SOAP otrzymuję ciąg JSON jako odpowiedź, używam json.net do jego analizy.Uzyskaj długość tablicy JSON.Net

Przykład JSON mam:

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

I analizować je i zapisywać je w konsoli:

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

To działa jak zaklęcie, tylko nie wiem, długość JSONObject, ale muszę to zrobić w pętli for. I tylko nie mają pojęcia, w jaki sposób mogę uzyskać długość „testu [” JSONObject „]”

ale coś podobnego testu [ „JSONObject”]. Długość byłoby zbyt proste Chyba :(..

Odpowiedz

39

Ty może rzutować obiektu do JArray a następnie użyć właściwości Count, tak:

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

można następnie pętli pozycje w następujący sposób:

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

Według Onno (OP), można także skorzystać z następującej:

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

Jednak ja osobiście nie potwierdziła, że ​​będzie działać

+0

Nie trzeba rzucać się na 'JArray' że? – svick

+0

Próbowałem tego, jak widziałem to gdzie indziej. Ale czasami nie próbowałem Count(), co wydaje się działać. Bardzo mi przykro z powodu mojej głupoty: O – Onno

+0

@Ono: Czy mówisz, że 'Count()' działa? Jeśli tak, mogę zaktualizować odpowiedź: – musefan

Powiązane problemy