我可以LINQ一个JSON?

这是我从.NET上的请求得到的JSON:

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

我想赶上领域的“url”,使用(也许?)LINQ。 我做了很多这样的要求,有点不同。 所以我不会创build一个C#类并每次反序列化它。

这是一种提取单个字段的方法吗? 谢谢!

不需要Linq,只需使用dynamic (使用Json.Net )

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

Linq版本不会太可读

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

文档: LINQ to JSON

我不会推荐LINQ。 我会推荐一个JSON库,如newtonsoft.json。

所以你可以这样做:

 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 

注意: – 此代码已从项目网站http://james.newtonking.com/pages/json-net.aspx上提供的示例中复制;

在绑定中,您总是可以反序列化JSON并将其序列化为XML,然后将XML加载到XDocument中。 然后你可以使用经典的Linq to XML。 完成后,将XML反序列化,然后将其序列化回JSON转换为JSON。 我们使用这种技术将JSON支持添加到最初为XML构build的应用程序,它允许近乎零的修改启动和运行。