¿Puedo LINQ un JSON?

Este es el JSON que obtengo de una solicitud en .NET:

{ "id": "110355660738", "picture": { "data": { "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/1027085_12033235063_5234302342947_n.jpg", "is_silhouette": false } } } 

y me gustaría atrapar el campo “url”, usando (¿quizás?) LINQ. Hago muchas peticiones como esta, eso difiere un poco. Entonces no crearé una clase C # y la deserializaré siempre.

¿Es una forma de extraer un solo campo? ¡Gracias!

No es necesario para Linq, solo use dynamic (usando Json.Net )

 dynamic obj = JObject.Parse(json); Console.WriteLine((string)obj.picture.data.url); 

La versión de Linq no sería muy legible

 JObject jObj = JObject.Parse(json); var url = (string)jObj.Descendants() .OfType() .Where(p => p.Name == "url") .First() .Value; 

Documentación: LINQ to JSON

No recomendaría LINQ. Recomendaría una biblioteca JSON como newtonsoft.json.

Entonces puedes hacer esto:

 string json = @"{ ""Name"": ""Apple"", ""Expiry"": "2008-12-28T00:00:00", ""Price"": 3.99, ""Sizes"": [ ""Small"", ""Medium"", ""Large"" ] }"; JObject o = JObject.Parse(json); string name = (string)o["Name"]; // Apple JArray sizes = (JArray)o["Sizes"]; string smallest = (string)sizes[0]; // Small 

Nota: – este código ha sido copiado de los ejemplos presentes en el sitio del proyecto http://james.newtonking.com/pages/json-net.aspx

En un enlace, siempre se puede deserializar el JSON y serializarlo en XML, y cargar el XML en un XDocument. Entonces puedes usar el clásico Linq para XML. Cuando hayas terminado, toma el XML, deserialízalo y serialízalo de nuevo a JSON en JSON. Usamos esta técnica para agregar soporte JSON a una aplicación que originalmente fue desarrollada para XML, permitió que las modificaciones cercanas a cero se pusieran en marcha.