2009-11-08 9 views
24

Allo stato attuale, la struttura del mio codice utilizza XmlDocument per caricare dati Xml e quindi SelectNodes per scorrere un elenco di elementi ripetuti.Qual è l'equivalente JSON.NET dell'XMLath, SelectNodes, SelectSingleNode dell'XML?

Per ciascun elemento, sto utilizzando XmlNode.SelectSingleNode per selezionare gli elementi del campo.

Ora desidero utilizzare JSON.NET per ottenere gli stessi risultati con i documenti consegnati a me come JSON. La risposta può essere qualcosa di diverso da JSON.net, purché sia ​​C# integrabile.

risposta

34

Json.NET ha SelectToken. Esso utilizza una sintassi simile a DataBinder.Eval per ottenere JSON tramite una stringa:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff'},{'Name':'Joe'}]}"); 

// get name token of first person and convert to a string 
string name = (string)o.SelectToken("People[0].Name"); 

O se si voleva selezionare più valori:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff','Roles':['Manager', 'Admin']}]}"); 

// get role array token of first person and convert to a list of strings 
IList<string> names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList(); 

Documentazione: Querying JSON with SelectToken

+0

Bello! C'è un modo per farlo in un modo insensibile alle maiuscole e minuscole? Come 'JToken.GetValue (" qualcosa ", StringComparison.OrdinalIgnoreCase)'? –

1

Avete una gerarchia di oggetti che è possibile mappare il JSON? Si potrebbe creare un albero di oggetti (vale a dire deserializzare il JSON), e utilizzare LINQ di Where, SelectMany, ecc

+0

Grazie per la risposta Marc. In particolare, sto utilizzando il feed twitter.com/status/mentions.json. Voglio passare ogni "stato" a un rendering HTML senza sapere (al momento della compilazione) quali campi sta utilizzando e consentirgli di caricare campi con la versione JSON di SelectSingleNode. Un esempio di LINQ potrebbe aiutare molto :) –

+0

Ah, giusto. Non ti permetterebbe di usare una stringa arbitraria, se questo è ciò che intendi. Avrebbe bisogno di codice per scenario. –

Problemi correlati