Puis-je LINQ un JSON?

C’est le JSON que je reçois d’une requête sur .NET:

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

et je voudrais attraper le champ “url”, en utilisant (peut-être?) LINQ. Je fais beaucoup de demandes comme cela, cela diffère un peu. Je ne vais donc pas créer une classe C # et la désérialiser à chaque fois.

Est-ce un moyen d’extraire un seul champ? Je vous remercie!

Pas besoin de Linq, utilisez simplement dynamic (en utilisant Json.Net )

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

La version de Linq ne serait pas très lisible

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

Documentation: LINQ to JSON

Je ne recommanderais pas LINQ. Je recommanderais une bibliothèque JSON telle que newtonsoft.json.

Vous pouvez donc faire ceci:

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

Remarque: – ce code a été copié à partir des exemples présents sur le site du projet http://james.newtonking.com/pages/json-net.aspx

Dans une liaison, vous pouvez toujours désérialiser le JSON et le sérialiser en XML, et charger le XML dans un XDocument. Ensuite, vous pouvez utiliser le classique Linq to XML. Lorsque vous avez terminé, prenez le fichier XML, désérialisez-le et numérotez-le en JSON en JSON. Nous avons utilisé cette technique pour append le support JSON à une application initialement conçue pour XML, elle permettait des modifications quasiment nulles pour fonctionner.