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.