¿Cuál es el equivalente JSON.NET de XML’s XPath, SelectNodes, SelectSingleNode?

Actualmente, la estructura de mi código usa XmlDocument para cargar datos Xml y luego SelectNodes para iterar a través de una lista de elementos repetidos.

Para cada elemento, estoy usando XmlNode.SelectSingleNode para seleccionar los elementos del campo.

Ahora quiero usar JSON.NET para lograr los mismos resultados con documentos entregados como JSON. La respuesta puede ser algo más que JSON.net, siempre que sea C # integrable.

Json.NET tiene SelectToken. Utiliza una syntax similar a DataBinder.Eval para obtener JSON a través de una expresión de cadena:

 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 si desea seleccionar valores múltiples:

 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 names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList(); 

Documentación: consultar JSON con SelectToken

¿Tiene una jerarquía de objetos que puede asignar el JSON? Podría crear un árbol de objetos (es decir, deserializar el JSON) y usar LINQ’s Where , SelectMany , etc.