2012-04-03 6 views
8

Mam ciąg JSON, który wygląda tak:Hrabia liczba elementów w ciąg JSON z Json.NET w C#

{ 
"package1": { 
    "type": "envelope", 
    "quantity": 1, 
    "length": 6, 
    "width": 1, 
    "height": 4 
}, 
"package2": { 
    "type": "box", 
    "quantity": 2, 
    "length": 9, 
    "width": 9, 
    "height": 9 
} 
} 

Używam Json.NET LINQ do JSON funkcjonalność do obsługi mojego ciąg JSON , ale zastanawiam się, w jaki sposób mogę znaleźć całkowitą liczbę węzłów/elementów/kluczy (nie jestem naprawdę pewien, jak je nazwać) w moim ciągu. Na przykład powyższy ciąg ma pakiet1 i pakiet2, więc zastanawiam się, w jaki sposób mogę go uzyskać, aby zwrócić liczbę całkowitą 2. Czasami mogę mieć tylko jedną paczkę, w takim przypadku chciałbym, aby zwróciła liczbę całkowitą 1. Inne razy mogę mieć 20 paczek (w tym przypadku chciałbym, żeby powrócił 20).

My JObject wygląda następująco:

JObject o = JObject.Parse(myJsonString); 

Jakieś pomysły? Dzięki za pomoc.

Odpowiedz

16
JObject jObj = (JObject)JsonConvert.DeserializeObject(myJsonString); 
int count = jObj.Count; 

BONUS:

dynamic jObj = JsonConvert.DeserializeObject(myJsonString); 

foreach (var package in jObj) 
{ 
    Console.WriteLine("{0} {1}", package.First.type, package.First.quantity); 
} 
+1

Dziękuję bardzo! To doprowadzało mnie do szaleństwa przez wiele dni. Zaznaczę to poprawnie za 4 minuty :) –

+0

@BrentBarbata [Kolejny przydatny link] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) :) –

+0

Ha Przyjąłem go, zanim przeczytałem zalecany 24-48 godzinny okres oczekiwania. Jestem nowy, więc wciąż się uczę. W każdym razie, jeszcze raz dziękuję za pomoc. –

-3

w JQuery $ .ajax otrzymasz tablicę, przejdziesz przez elementy i otrzymasz sumę.

+0

dziękuję za odpowiedzi, ale jestem próbuje dowiedzieć się, jak to zrobić z Json.NET w C#. –