我可以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的应用程序,它允许近乎零的修改启动和运行。