Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
12 / 12 / 0
Регистрация: 04.07.2011
Сообщений: 287

Как распарсить такой ответ от vk (json) ?

08.09.2014, 19:54. Показов 2729. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста распарсить ответ от vk.
В общем есть такой ответ в формате json:
Кликните здесь для просмотра всего текста

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{  
  "response":[  
    620,
    {  
      "aid":305032916,
      "owner_id":115226501,
      "artist":"Gnarls Barkley",
      "title":"Crazy (TEEMID & Joie Tan Cover) ",
      "duration":272,
      "url":"https:\/\/cs9-6v4.vk.me\/p16\/4c24ea770894d1.mp3?extra=OEg_VT_MGAyoZL5qaXZ4dXtT9-rq8quieG5pXg0Dbk69H1kHrywXav2QQ33cEuWdhqFjTLQKvzlkOfnnAPF2jDJEHMvO-Nwi0w",
      "genre":9
    }
  ]
}

Пробовал кучу примеров кода по десериализации json, разные библиотеки. Ещё пробовал примеры именно по десериализации ответов от вк, но там было не много старое. Дело в том что в последних версиях vk api теперь в response пишется ещё число 620 (честно говоря не знаю что это значит) и из за этого сдохла вся часть кода отвечающая этому (раньше этого не было, и парсилось всё намного проще).
Как это десериализовать без использования Regex ?
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2014, 19:54
Ответы с готовыми решениями:

Распарсить с помощью Json.Net приходящий ответ в виде JSON
Нужна помощь с json {"success":true, "rgInventory":{ "1025429056":{ "id":"1025429056", "classid":"310779217",...

Распарсить JSON ответ от вконтакте
Значит делаю запрос к контакту https://api.vk.com/method/likes.isLiked?owner_id=&item_id=&type=photo&access_token= потом я делаю...

Как распарсить такой JSON
{"response":} Как распарарсить такой JSon нужно выделить из массива первое число а дальше все uid и body?? Можете подсказать? ...

8
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.09.2014, 09:45
можно тупо регулярками, например "aid".*?)\n достанет aid из вашего примера
1
 Аватар для wi34rd
13 / 13 / 10
Регистрация: 09.09.2014
Сообщений: 41
09.09.2014, 10:10
Работа с JSON-данными
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
09.09.2014, 10:45
Могу посоветовать regexhero.net , сам уже очень давно пользуюсь, помогает правильно данные достать.
1
12 / 12 / 0
Регистрация: 04.07.2011
Сообщений: 287
09.09.2014, 18:56  [ТС]
xoraxax, karaulov6, ладненько, спасибо, придется переходить на регулярки.
Всё же придется наверно) Хотел как то красивенько сделать json парсером каким нибудь, но походу ничего не выйдет. Придется что то мудрить на регулярках) А может и написать свой класс JsonRegex. Спасибо в общем
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
09.09.2014, 19:31
Лучший ответ Сообщение было отмечено robertono как решение

Решение

robertono,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private static void Main(string[] args)
        {
            string json =
                @"{ ""response"":[ 610, { ""aid"":305032916, ""owner_id"":115226501, ""artist"":""Gnarls Barkley"", ""title"":""Crazy (TEEMID & Joie Tan Cover) "", ""duration"":272, ""url"":""https:\/\/cs9-6v4.vk.me\/p16\/4c24ea770894d1.mp3?extra=OEg_VT_MGAyoZL5qaXZ4dXtT9-rq8quieG5pXg0Dbk69H1kHrywXav2QQ33cEuWdhqFjTLQKvzlkOfnnAPF2jDJEHMvO-Nwi0w"", ""genre"":9 } ]}";
 
            var rootObject = new JavaScriptSerializer().Deserialize<Root>(json);
 
            var i = ((int) rootObject.response[0]);
            var info = ((Dictionary<string, object>) rootObject.response[1]);
 
            Console.WriteLine(i);
 
            foreach (var o in info)
            {
                Console.WriteLine("{0} {1}", o.Key, o.Value);
            }
        }
 
 
        public class Root
        {
            public ArrayList response { get; set; }
        }
3
12 / 12 / 0
Регистрация: 04.07.2011
Сообщений: 287
09.09.2014, 19:48  [ТС]
XRoy, Хах, спасибо большое. Собирает красиво, осталось сделать преобразователь из словаря в класс.
Благодарю
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
09.09.2014, 20:05
Лучший ответ Сообщение было отмечено robertono как решение

Решение

robertono,
Словарь в класс достаточно красиво преобразуется при помощи рефлексии, но следует учесть что не создать объекты которые не имеют конструктора без параметров
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 TrackInfo trackInfo = DictToObject<TrackInfo>(info);
 
private T DictToObject<T>(Dictionary<string, object> dict)
        {
            Type type = typeof (T);
            var obj = Activator.CreateInstance(type);
 
            foreach (var o in dict)
            {
                type.GetProperty(o.Key).SetValue(obj, o.Value);
            }
 
            return (T) obj;
        }
 
        public class TrackInfo
        {
            public int aid { get; set; }
            public int owner_id { get; set; }
            public string artist { get; set; }
            public string title { get; set; }
            public int duration { get; set; }
            public string url { get; set; }
            public int genre { get; set; }
        }
1
12 / 12 / 0
Регистрация: 04.07.2011
Сообщений: 287
09.09.2014, 20:14  [ТС]
XRoy, спасибо, применю как появится время
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.09.2014, 20:14
Помогаю со студенческими работами здесь

Как распарсить Json-ответ Android приложении?
Добрый день! Android приложение получает ответ от сервера в формате Json. Есть 2 варианта ответа : 1. 2. Какой лучше...

Распарсить JSON ответ
Всем привет. Суть дела: пишу плагин для хрома. На сайте по нажатию на кнопку серверу отправляется POST-запрос в формате ...

Распарсить Json-ответ сервера Vk
В общем получил ответ от сервера в вк в формате Json. Каким образом с помощью DBXJSON можно распарсить его? Интересует как получить...

Можно ли распарсить такой массив через JSON
Подскажите как распарсить такую запись при помощи json? И возможно ли вообще распарсить такую запись через json? images = { ...

Как распарсить данные из первого json-а и перекинуть их в другой json
Добрый день, столкнулся с такой задачей. Есть вот такой json Необходимо извлечь некоторые данные, провести некоторые...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru