Хелп, помогите пожалуйста распарсить JSON ответ от апи вконтакте и записать его в таблицу

  • Автор темы Автор темы littleKongo
  • Дата начала Дата начала

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Реакции
24
Баллы
18
Хелп, помогите пожалуйста распарсить JSON ответ от апи вконтакте и записать его в таблицу

Вот сам ответ

Код:
Развернуть Свернуть Копировать
{"response":[1000,{"id":18,"date":1453709185,"owner_id":-112685262,"from_id":-112685262,"group":{"gid":112685262,"name":"Бабло из Интернета","screen_name":"club112685262","is_closed":0,"type":"group","photo":"http:\/\/cs628131.vk.me\/v628131717\/3a5f6\/BO3Dx93xjYE.jpg","photo_medium":"http:\/\/cs628131.vk.me\/v628131717\/3a5f5\/H72iHxw4XOY.jpg","photo_big":"http:\/\/cs628131.vk.me\/v628131717\/3a5f4\/oxwe6HMuXYA.jpg"},"post_type":"post","text":"КАК ЗАРАБОТАТЬ В ИНТЕРНЕТЕ<br><br> В сфере нынешних экономических событий, когда найти работу стает все сложнее, вопросом как заработать в интернете задаются все больше и больше людей, которые имеют доступ к Интернету. РНе теряйте время даром. Зарабатывать в сети Интернет реально, главное желание.","attachment":{"type":"photo","photo":{"pid":402179564,"aid":-7,"owner_id":-112685262,"user_id":100,"src":"http:\/\/cs631116.vk.me\/v631116717\/1100b\/Yhn_RJnQpPY.jpg","src_big":"http:\/\/cs631116.vk.me\/v631116717\/1100c\/sRSLTwQ6vbI.jpg","src_small":"http:\/\/cs631116.vk.me\/v631116717\/1100a\/DU0cKByR88A.jpg","width":200,"height":150,"text":"","created":1453709185,"post_id":18,"access_key":"3745e208e4bb4c6d35"}},"attachments":[{"type":"photo","photo":{"pid":402179564,"aid":-7,"owner_id":-112685262,"user_id":100,"src":"http:\/\/cs631116.vk.me\/v631116717\/1100b\/Yhn_RJnQpPY.jpg","src_big":"http:\/\/cs631116.vk.me\/v631116717\/1100c\/sRSLTwQ6vbI.jpg","src_small":"http:\/\/cs631116.vk.me\/v631116717\/1100a\/DU0cKByR88A.jpg","width":200,"height":150,"text":"","created":1453709185,"post_id":18,"access_key":"3745e208e4bb4c6d35"}}],"comments":{"count":0},"likes":{"count":7},"reposts":{"count":5}},{"id":5107,"date":1453633298,"owner_id":-72239958,"from_id":-72239958,"group":{"gid":72239958,"name":"Легко и просто купить или продать в КИРОВОГРАДЕ","screen_name":"club72239958","is_closed":0,"type":"group","photo":"http:\/\/cs623817.vk.me\/v623817172\/22aea\/qBSWpnZzO8g.jpg","photo_medium":"http:\/\/cs623817.vk.me\/v623817172\/22ae9\/xQDAIaAwoTE.jpg","photo_big":"http:\/\/cs623817.vk.me\/v623817172\/22ae8\/E_TUCHbDVwM.jpg"},"post_type":"post","text":"Советы начинающим копирайтерам<br><br>Если Вы не так давно занялись написанием статей за деньги и полем деятельности избрали Интернет, то данная короткая статья будет Вам весьма полезна. Ну а если копирайтерская стезя только в планах - польза от материала будет вообще огромная!  Постепенно привыкайте к тому, что Ваши статьи приобретают ценность. Это будет происходить приблизительно через несколько месяцев после начала копирайтерской практики. Когда появится это чувство, то можете и поднять планку оплаты за свои материалы - ведь они стоят того!<br>Вот и все - будем ставить точку. <br><br>В заключении приведем слова одного сердитого копирайтера, который как нельзя удачно передал весь оттяг, сопутствующий его ремеслу, - \"С помощью копирайтинга я зарабатываю на жизнь, а большинство людей, даже не слышали что сей термин означает\". <br><br>Удачи!","attachment":{"type":"photo","photo":{"pid":399069681,"aid":-7,"owner_id":-72239958,"user_id":100,"src":"http:\/\/cs633625.vk.me\/v633625131\/c9c5\/ergFtvJV5qg.jpg","src_big":"http:\/\/cs633625.vk.me\/v633625131\/c9c6\/mQEIB30V-n4.jpg","src_small":"http:\/\/cs633625.vk.me\/v633625131\/c9c4\/5ellomCqMcg.jpg","width":450,"height":270,"text":"","created":1453629605,"post_id":5104,"access_key":"67b394894a7d53396c"}},"attachments":[{"type":"photo","photo":{"pid":399069681,"aid":-7,"owner_id":-72239958,"user_id":100,"src":"http:\/\/cs633625.vk.me\/v633625131\/c9c5\/ergFtvJV5qg.jpg","src_big":"http:\/\/cs633625.vk.me\/v633625131\/c9c6\/mQEIB30V-n4.jpg","src_small":"http:\/\/cs633625.vk.me\/v633625131\/c9c4\/5ellomCqMcg.jpg","width":450,"height":270,"text":"","created":1453629605,"post_id":5104,"access_key":"67b394894a7d53396c"}}],"comments":{"count":0},"likes":{"count":0},"reposts":{"count":0}},{"id":3573,"date":1453558100,"owner_id":22393037,"from_id":22393037,"user":{"uid":22393037,"first_name":"Kamshat","last_name":"Webb","sex":1,"screen_name":"kamshat_webb","photo":"http:\/\/cs616526.vk.me\/v616526037\/eccf\/x8uCpkLF8fc.jpg","photo_medium_rec":"http:\/\/cs616526.vk.me\/v616526037\/ecce\/OjX-VQ7UGK0.jpg","online":0},"post_type":"post","text":"#Интервью с профессиональным копирайтером-фрилансером, Кириллом Стрельниковым ☺<br><br> Кирилл занимается копирайтерской деятельностью больше 15 лет, он создает оригинальные, а главное - работающие тексты и слоганы для любой сферы бизнеса и компаний любого размера. Вот ссылка на сайт Кирилла  http:\/\/www.supercreator.ru <br><br> Это интервью будет очень полезным для всех, кто интересуется копирайтингом, для тех, кому нужны услуги профессиональных копирайтеров, а также для тех, кто совсем не знаком с этой профессией.<br><br>✨  Все гениальные копирайтеры когда-то были никакими, и это их не остановило. Не бойтесь делать «ненастоящее» портфолио. Не бойтесь притвориться «крутым». Не бойтесь творчески использовать идеи, придуманные до вас. А главное – не бойтесь конкуренции. Вы не похожи на других, а это значит, что у Вас обязательно есть своя фишка, которую нужно вытащить на поверхность – и плыть на всех парусах. Счастливого плавания!","attachment":{"type":"photo","photo":{"pid":398279826,"aid":-7,"owner_id":22393037,"src":"http:\/\/cs627724.vk.me\/v627724037\/3c2a0\/0Hz-4TE5Q_k.jpg","src_big":"http:\/\/cs627724.vk.me\/v627724037\/3c2a1\/18vNyIIp7bk.jpg","src_small":"http:\/\/cs627724.vk.me\/v627724037\/3c29f\/NAN7JyHzabg.jpg","src_xbig":"http:\/\/cs627724.vk.me\/v627724037\/3c2a2\/nhSiRz5rKfk.jpg","width":766,"height":511,"text":"","created":1453558093,"post_id":3573,"access_key":"7f52aefe42049380cf"}},"attachments":[{"type":"photo","photo":{"pid":398279826,"aid":-7,"owner_id":22393037,"src":"http:\/\/cs627724.vk.me\/v627724037\/3c2a0\/0Hz-4TE5Q_k.jpg","src_big":"http:\/\/cs627724.vk.me\/v627724037\/3c2a1\/18vNyIIp7bk.jpg","src_small":"http:\/\/cs627724.vk.me\/v627724037\/3c29f\/NAN7JyHzabg.jpg","src_xbig":"http:\/\/cs627724.vk.me\/v627724037\/3c2a2\/nhSiRz5rKfk.jpg","width":766,"height":511,"text":"","created":1453558093,"post_id":3573,"access_key":"7f52aefe42049380cf"}}],"comments":{"count":0},"likes":{"count":3},"reposts":{"count":1}}]}

Вот заготовка С# для распарсивания, но надо кажется что-то сделать с циклами. Заготовка с другого проекта, там проще распарсивание было делать

Да, и здесь для примера всего 3 ответа, а вообще планируется что будет 50 ответов, и хочется чтобы за один снипет распарсивало все ответы в таблицу

Лбязательные параметры для распарсивания
"id"
"owner_id"
"from_id"
"text"

Код:
Развернуть Свернуть Копировать
var json = project.Variables["var1"].Value;
var jsoner = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string,object> data = jsoner.Deserialize<Dictionary<string,object>>(json);
var response = (System.Collections.ArrayList)data["response"];

var table = project.Tables["temp"];
lock(SyncObjects.TableSyncer)
{
   foreach (var item in temp)
   {
     var name = ((Dictionary<string,object>)(item))["id"].ToString();
  var cnt = ((Dictionary<string,object>)(item))["owner_id"].ToString();
     var url = ((Dictionary<string,object>)(item))["from_id"].ToString();
     table.AddRow(id+"\t"+owner_id+"\t"+from_id);
   }
}
 
Последнее редактирование:
Поправил код на такой, все должно работать вроде, но выдает ошибку
"Выполнение действия CSharp OwnCode Не удалось привести тип объекта "System.Int32" к типу "System.Collections.Generic.Dictionary`2[System.String,System.Object]"."

Код:
Развернуть Свернуть Копировать
var json = project.Variables["var1"].Value;
var jsoner = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary<string,object> data = jsoner.Deserialize<Dictionary<string,object>>(json);
var response = (System.Collections.ArrayList)data["response"];

var table = project.Tables["response"];
lock(SyncObjects.TableSyncer)
{
    foreach (var item in response)
    {
        var id = ((Dictionary<string,object>)(item))["id"].ToString();
        var owner_id = ((Dictionary<string,object>)(item))["owner_id"].ToString();
        var from_id = ((Dictionary<string,object>)(item))["from_id"].ToString();
        table.AddRow(id+"\t"+owner_id+"\t"+from_id);
    }
}
 
Убрал в ответе 1000
MQyVOFi.png
и вроде заработало, НО, как сделать чтобы заработало без убирания этой 1000, и вообще что это за 1000?
 
Убрал в ответе 1000
MQyVOFi.png
и вроде заработало, НО, как сделать чтобы заработало без убирания этой 1000, и вообще что это за 1000?
Друзья форумчане, помогите пожалуйста
Никак не могу решить вопрос с этой цифрой, она каждый раз разная и если ее убираешь, то код отрабатывает корректно
 
удали это число регуляркой, и дело с концом
 
удали это число регуляркой, и дело с концом
удаляю регуляркой, однако она почему-то не каждый раз срабатывает, а проект в минуту выполняется 20-30 раз и постоянно ошибки вылетают

Вот так это выглядит:
 
Очень важно чтобы проект работал без ошибок
 
Очень важно чтобы проект работал без ошибок
Сталкивался с такой же проблемой. Устранил только после правки API запроса к ВК. (У меня был "комбинированный" запрос через екзекуте).
Если проблема актуальна - обращайтесь.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)