Могу ли я LINQ A JSON?
это JSON, который я получаю от запроса на .NET:
{
"id": "110355660738",
"picture": {
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/1027085_12033235063_5234302342947_n.jpg",
"is_silhouette": false
}
}
}
и я хотел бы поймать поле "url", используя (может быть?) LINQ. Я делаю много запросов, как это, что отличий немного. Поэтому я не буду создавать класс C# и десериализовывать его каждый раз.
Это способ извлечь одно поле? Спасибо!
3 ответа:
нет необходимости в 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, это позволило почти нулевым модификациям встать и работать.