Доброго всем дня! Я новичок и прошу вашей помощи господа специалисты и не очень.
Перегоняю я коллекцию в 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 и др.