2013-09-26 23 views
22

Come posso ottenere la lunghezza di un array JSON che utilizzo con json.net in C#? Dopo aver inviato una chiamata SOAP ottengo una stringa JSON come risposta, io uso json.net per analizzarlo.Ottieni lunghezza dell'array JSON.Net

Esempio di JSON ho ottenuto:

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

E io analizzare e scrivere in console:

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

Questo funziona come un incantesimo, solo che non so la lunghezza il JSONObject, ma ho bisogno di farlo in un ciclo for. Ho solo idea di come posso ottenere la lunghezza del "test [" JSONObject "]"

ma qualcosa di simile prova [ "JSONObject"]. Lunghezza sarebbe troppo facile Credo :(..

risposta

39

È può lanciare l'oggetto a un JArray e quindi utilizzare la proprietà Count, in questo modo:

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

È quindi possibile anello gli articoli come segue:

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

.210

Secondo Onno (OP), è anche possibile utilizzare il seguente:

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

Tuttavia, non ho personalmente confermato che questo funzionerà

+0

non Avete bisogno di lanciare a 'JArray' per quella? – svick

+0

L'ho provato, come ho visto da qualche altra parte. Ma in ogni caso non ho provato Count(), invece, quello che sembra funzionare. Mi dispiace molto per la mia stupidità: O – Onno

+0

@Onno: Stai dicendo che 'Count()' funziona? Se è così posso aggiornare la risposta – musefan