2012-04-03 10 views
8

ho una stringa JSON che assomiglia a questo:conte numero di elementi nella stringa JSON con Json.NET in C#

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

Sto utilizzando la funzionalità di LINQ to Json.NET JSON per gestire la mia stringa JSON , ma mi chiedo come posso trovare il numero totale di nodi/elementi/chiavi (non sono proprio sicuro di come chiamarli) nella mia stringa. Ad esempio, la stringa precedente ha package1 e package2 quindi mi chiedo come posso ottenere di restituire l'intero 2. A volte potrei avere solo un pacchetto, nel qual caso, mi piacerebbe che restituisse l'intero 1. Altro volte potrei avere 20 pacchetti (in tal caso mi piacerebbe che restituisse 20).

mio jobject assomiglia a questo:

JObject o = JObject.Parse(myJsonString); 

Tutte le idee? Grazie per qualsiasi aiuto.

risposta

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

Grazie mille! Questo mi ha fatto impazzire per giorni. Lo segnerò correttamente in 4 minuti :) –

+0

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

+0

Ha L'ho accettato prima di leggere il periodo di attesa consigliato di 24-48 ore. Sono nuovo quindi sto ancora imparando. Comunque, grazie ancora per il tuo aiuto. –

-3

in JQuery $ .ajax riceverai un array, attraverserai gli elementi e otterrai la somma.

+0

Grazie mille per la risposta, ma sto cercando di capire come fare questo con Json.NET in C#. –

Problemi correlati