Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
.NET 4.x

Создать структуру вложенных объектов

04.08.2013, 18:20. Показов 1501. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Решил побаловаться с VK API и возникла проблема. Есть json текст (ответ от сервера VK) примерно следующего содержания:
JSON
{
"response": [
79457,
{
"mid": 321,
"date": 123,
"out": 1,
"uid": 984,
"read_state": 1,
"title": " ... ",
"body": "",
"fwd_messages": [
{
"uid": 981,
"date": 152,
"body": "",
"fwd_messages": [
{
"uid": 654,
"date": 156,
"body": "1"
},
{
"uid": 174,
"date": 158,
"body": "2"
}
]
},
{
"uid": 949,
"date": 651,
"body": "",
"fwd_messages": [
{
"uid": 694,
"date": 320,
"body": "32",
"fwd_messages": [
{
"uid": 152,
"date": 111,
"body": "1",
"fwd_messages": [
{
"uid": 151,
"date": 112,
"body": "8"
}
]
},
{
"uid": 542,
"date": 315,
"body": "2",
"fwd_messages": [
{
"uid": 129,
"date": 514,
"body": "1",
"fwd_messages": [
{
"uid": 635,
"date": 225,
"body": "8"
}
]
}
]
}
]
},
{
"uid": 123,
"date": 650,
"body": "",
"fwd_messages": [
{
"uid": 154,
"date": 122,
"body": "1"
},
{
"uid": 547,
"date": 510,
"body": "2"
}
]
}
]
}
]
}
]
}

Для удобства восприятия можно воспользоваться сайтом json editor online.
Так вот, этот json текст содержит массив пересланных сообщений "fwd_messages". Мне нужно получить такую же структуру как и в тексте. Написал следующий класс:
C#
1
2
3
4
5
6
public class ForwardMessage : List<ForwardMessage>
{
    public long Uid { get; set; }
    public long Date { get; set; }
    public string Text { get; set; }
}
Но что то не хватает ума чтобы придумать как пройтись по всем вложенным элементам массива "fwd_messages". Если кто то знает как можно организовать всё по человечески подскажите пожалуйста.

P.S. - для работы с json текстом использую библиотеку Newtonsoft.Json.dll (можно скачать во вложениях). Работать с ней можно примерно так:
C#
1
2
3
4
foreach (JToken json_item in json["fwd_messages"])
{
    ...
}
Вложения
Тип файла: rar Newtonsoft.Json.rar (130.8 Кб, 3 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2013, 18:20
Ответы с готовыми решениями:

Dispose вложенных объектов
Вопрос следующий: если в одном классе использовать ресурс с неуправляемой памятью, а затем во вложенные классы передавать этот же ресурс,...

Стили для вложенных объектов
Здравствуйте! Не могу разобраться со следующей задачей: Есть следующая верстка: &lt;Button x:Name=&quot;StartButton&quot; ...

Сериализация вложенных объектов в XML
Сериализация вложенных объектов в XML. Подскажите пожалуйста, у меня есть 2 класса : public class Folder { public ...

3
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
04.08.2013, 20:32  [ТС]
Проблема решена.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
04.08.2013, 22:14
FakiR, будьте добры, поделитесь решением с общественностью
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
04.08.2013, 22:21  [ТС]
Примерно так, может кому тоже нужно будет.

C#
1
2
3
4
5
6
7
8
9
10
//если сообщение содержит пересланные сообщения
if (json_message["fwd_messages"] != null)
{
    for (int j = 0; j < json_message["fwd_messages"].Count(); j++)
    {
        //для каждого пересланного сообщения вызываем метод,
        //который рекурсивно строит цепочку из вложенных в него пересланных сообщений
        dialogue_message.ForwardMessagesList.Add(GetForwardMessages(json_message["fwd_messages"][j]));
    }
}
C#
1
2
3
4
5
6
7
8
public class ForwardMessages
{
    public long Uid { get; set; }
    public long Date { get; set; }
    public string Text { get; set; }
    public List<ForwardMessages> ForwardMessagesList { get; set; }
    public List<MessageAttachment> Attachment { get; set; }
}
C#
1
2
3
4
5
6
7
8
9
10
private ForwardMessages GetForwardMessages(JToken json_fwd_message)
{
    ForwardMessages fwd_message = new ForwardMessages();
    for (int i = 0; json_fwd_message["fwd_messages"] != null && i < json_fwd_message["fwd_messages"].Count(); i++)
        fwd_message.ForwardMessagesList.Add(GetForwardMessages(json_fwd_message["fwd_messages"][i]));
    fwd_message.Uid = (long)json_fwd_message["uid"];
    fwd_message.Date = (long)json_fwd_message["date"];
    fwd_message.Text = json_fwd_message["body"].ToString();
    return fwd_message;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2013, 22:21
Помогаю со студенческими работами здесь

Создать несколько вложенных папок при их отсутствии
Здравствуйте, у меня есть строка пути для сохранения файла, допустим: string save = &quot;C:\save\1.txt&quot; Я пытаюсь скачать его с...

Где и как создать массив объектов, чтобы можно было получить доступ к методам этих объектов?
Задача: &quot;в win form кликаю на кнопку (button) и в этот момент в одном из массивов экземпляров класса должен вызваться метод&quot; ...

Парсинг вложенных объектов
Всем привет. Есть вот такой объект: var a= { nodes: }, { q:3 } ] }

Перебор и присвоение вложенных объектов
Всем привет. Имеется вот такой код: obj = { p : { id : 21, parent : 1, name : 'Тест 21' }, p2 :...

Очистить содержимое вложенных директорий сохранив структуру каталогов
Как можно очистить содержимое вложенных директорий сохранив при этому структуру каталогов?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru