Страницы

Поиск по вопросам

понедельник, 13 мая 2019 г.

Как десериализовать JSON и вывести в ListBox url картинок

Доброго всем дня! Я новичок и прошу вашей помощи господа специалисты и не очень.
Перегоняю я коллекцию в JSON
ReadOnlyCollection wall = api.Wall.Get(-group.Id.Value, out totalCount, count); string json = JsonConvert.SerializeObject(wall, Formatting.Indented);
Затем смотрю,что я получаю в строку json, получается вот это -
[ { "Id": 144159, "OwnerId": -30022666, "FromId": -30022666, "Date": "2015-06-11T21:01:45+03:00", "Text": "Если вы не можете отказать себе в чем-либо, например, в мороженом, то мороженое управляет вами. Если вы ограничиваете себя в мороженом – то оно имеет над вами двойной контроль. Поскольку теперь к дискомфорту по поводу его отсутствия примешивается ненависть к себе и чувство вины в случае, если вы не смогли удержаться. Если же вы полностью отрицаете мороженое – то оно властвует над вами, ведь ему удалось отрезать кусочек вашей реальности.

Так же с остальными желаниями: алкоголь, секс, сигареты, деньги, адреналин. Бросить курить сложно не вследствие химической зависимости, а потому что бросающий зависит от сигарет куда больше курящего. Борющийся за демократию оппозиционер никогда не станет свободным гражданином – он раб борьбы. Монах-аскет никогда не победит \"страсть плоти\" – он останется рабом отрицания. Принятие и отторжение – всего лишь метаморфозы зависимости.

Мудрость заключается не в самоограничении, не в тотальной аскезе, а в балансе. Вы становитесь свободными от своих желаний тогда, когда сохраняете внутренний комфорт, вне зависимости о того, получаете ли вы желаемое или нет. Прелесть такой свободы в том, что вы – неуязвимы. Вы счастливы или ... счастливы.", "ReplyOwnerId": null, "ReplyPostId": null, "FriendsOnly": false, "Comments": { "Count": 0, "CanPost": false }, "Likes": { "Count": 10792, "UserLikes": false, "CanLike": true, "CanPublish": true }, "Reposts": { "Count": 2312, "UserReposted": false }, "PostType": "post", "PostSource": { "Type": "api", "Data": null }, "Attachments": [ { "Instance": { "Latitude": null, "Longitude": null, "AlbumId": -7, "Photo75": "http://cs629506.vk.me/v629506780/3a56/Sn3eI5qEtc0.jpg", "Photo130": "http://cs629506.vk.me/v629506780/3a57/tKRNTJlSH1s.jpg", "Photo604": "http://cs629506.vk.me/v629506780/3a58/wyz6H7Py_8U.jpg", "Photo807": null, "Photo1280": null, "Photo2560": null, "Width": 468, "Height": 366, "Text": "", "CreateTime": "2015-06-11T21:01:46+03:00", "AccessKey": "f91344779bdfeddf86", "UserId": 100, "PostId": 144159, "PlacerId": null, "TagCreated": null, "TagId": null, "Likes": null, "CanComment": null, "Comments": null, "Tags": null, "PhotoSrc": null, "PhotoHash": null, "Id": 368776971, "OwnerId": -30022666 }, "Type": "VkNet.Model.Attachments.Photo, VkNet, Version=1.0.16.0, Culture=neutral, PublicKeyToken=null" } ], "Attachment": { "Instance": { "Latitude": null, "Longitude": null, "AlbumId": -7, "Photo75": "http://cs629506.vk.me/v629506780/3a56/Sn3eI5qEtc0.jpg", "Photo130": "http://cs629506.vk.me/v629506780/3a57/tKRNTJlSH1s.jpg", "Photo604": "http://cs629506.vk.me/v629506780/3a58/wyz6H7Py_8U.jpg", "Photo807": null, "Photo1280": null, "Photo2560": null, "Width": 468, "Height": 366, "Text": "", "CreateTime": "2015-06-11T21:01:46+03:00", "AccessKey": "f91344779bdfeddf86", "UserId": 100, "PostId": 144159, "PlacerId": null, "TagCreated": null, "TagId": null, "Likes": null, "CanComment": null, "Comments": null, "Tags": null, "PhotoSrc": null, "PhotoHash": null, "Id": 368776971, "OwnerId": -30022666 }, "Type": "VkNet.Model.Attachments.Photo, VkNet, Version=1.0.16.0, Culture=neutral, PublicKeyToken=null" }, "Geo": null, "SignerId": null, "CopyPostDate": null, "CopyPostType": null, "CopyOwnerId": null, "CopyPostId": null, "CopyText": null, "CopyHistory": [], "CopyCommenterId": null, "CopyCommentId": null, "CanDelete": false, "CanEdit": false } ]
Вопрос как мне достать Url "Photo604": "http://cs629506.vk.me/v629506780/3a58/wyz6H7Py_8U.jpg", И отобразить в listbox? Спасибо!


Ответ

Для того, чтобы распарсить JSON, можете воспользоваться либо Json.NET, либо System.Web.Helpers.Json (нужна четвёртая версия .NET)
На примере Json.NET, код для получения url из Photo604 будет таким:
dynamic records = JArray.Parse(json); string url = records[0].Attachments[0].Instance.Photo604;
А получить все url для полей, названия которых начинаются на "Photo", можно, например, так:
dynamic records = JArray.Parse(json); dynamic instance = records[0].Attachments[0].Instance;
foreach (var field in instance) { if (field.Name.StartsWith("Photo") && field.Value != null) { listBox.Items.Add(field.Value.ToString()); } }
Способов, на самом деле много и это только один из них. В документации есть примеры с dynamic, LINQ, SelectToken и др.

Комментариев нет:

Отправить комментарий