Страницы: 1
RSS
библиотека cDataSet json, не могу распарсить json
 
существует библиотека cDataSet для эксель позволяющая парсить джсон без проблем(скачать можно здесь http://ramblings.mcpher.com/Home/excelquirks/downloads), но у меня не типичный вид :

Код
 [
{
"href":"ХХХ",
"title":"AAA",
"atpanel":"OOO",
"img":"PPP"

}
,
{
"href":"NNN",
"title":"JJJ",
"atpanel":"KKK",
"img":"TTT"

}  
 
........ ..... 
........  
,
{
"href":"RRR",
"title":"LLL",
"atpanel":"BBB",
"img":"MMM"

}  
]
представленные там готовые примеры не подходят.
если у кого то есть опыт работы с этой библиотекой, то буду благодарен за помощь в решении этой задачи
 
Цитата
библиотека cDataSet для эксель
вам это принципиально важно? именно с помощью этой библиотеки?
Цитата
не типичный вид
увы, я знаком с json понаслышке. подскажите - а чем именно данный вид нетипичен?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
OFF: спасибо за ссылку, библиотека - крутяк! теперь можно гугл аналитик и твиты в excel анализировать. Вещь! не ожидал что в свободном доступе на vba можно такое найти.

По вашему вопросу:библиотека хорошо парсит ваш json - функция JSONParse возвращает полноценное дерево нодов. вопрос - как вы хотите использовать дальше
примерный вариант реализации

Код
Public Sub x()
Dim my_j As New cJobject
Dim s As String
s = "[{'href':'XXX','title':'AAA','atpanel':'OOO','img':'PPP'},{'href':'NNN','title':'JJJ','atpanel':'KKK','img':'TTT'},{'href':'RRR','title':'LLL','atpanel':'BBB','img':'MMM'}]"
Set my_j = JSONParse(s)
i = 2
For Each p In my_j.children
Range("A" & i & "").value = p.children(1).value
Range("B" & i & "").value = p.children(2).value
Range("C" & i & "").value = p.children(3).value
Range("D" & i & "").value = p.children(4).value
i = i + 1
Next

End Sub
 
 
привет. подскажите, пожалуйста, как массив из массива вытаскивать. если брать код, который предложенный egonomist
Цитата
Range("A" & i & ""  ;)  .value = p.children(1).value
то вытаскиваются значения только корневые, то бишь "click_cnt_day" , "campaign_id", "show_cnt_day", "id", "api_status" и т.п.
а вот массивы из массивов не вытаскивает, а пишет пустые значения. Например, у "links" , "stats" и т.п  

Код
[{
"links": ["http://xxx.ru/xxx/xxx.html"], 
"click_cnt_day": 0, 
"campaign_id": 11010, 
"show_cnt_day": 0, 
"id": 1515, 
"stats": {
   "24-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0},
   "25-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0},
   "22-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0},
   "23-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0},
   "26-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0},
   "27-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0},
   "28-01-2014":{"show_uniq": 0, "click_cnt": 0, "click_uniq": 0, "show_cnt": 0, "goal_cnt": 0}
       },
"api_status": "ended",
"max_show": 100000,
"stop_after_moderation": true,
"max_click": 0,
"moderation_reason_display": "",
"start_date": null,
"show_cnt_yday": 0,
"html.html": "\n\n\n##SetVars(RB_Height=400)##\n\n\n",
"end_date": null,
"max_show_day": 0,
"show_cnt": 110225,
"max_show_user": 0,
"moderation_state": "allowed",
"name": "1652.swf",
"click_cnt": 400,
"h24.values_list": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
"d7.values_list": [0, 1, 2, 3, 4, 5, 6], "click_cnt_yday": 0
}]
 
Добрый день, в разборе любой структуры будь то xml или json можно оперировать объектами child, children, parent. гуглите DOM структура документа.
Для каждого подмассива нужно выбрать все его дочерние элементы (children) и уже циклом получать их значения.
например, для получения show_uniq для даты "24-01-2014" из stats надо написать следующее
my_j.children("stats").children(1).children(1).value, или my_j.children(7).children(1).children(1).value
т.е можно обратиться по имени или по индексу.
Для каждого отдельного json писать отдельный макрос - дело муторное. Поэтому написал макрос выгрузки на лист excel распарсеного json.
поддерживается до двух вложенных массивов (Parent -> child(1) -> children of child(1))

во вложении архив с экспортированным модулем. Разархивировать файл. в редакторе Visual Basic - File - Import - указать файл.
 
Спасибо большое!
 
Товарищи помогите разобраться, как пользоваться этой библиотекой, скачал файл, запускаю, - запускается с кучей ошибок.
ничего из стандартных примеров проверить я не смог - просто не дают ошибки

пробовал перенести класс cJobject и модуль usefulcJobject в чистый проект и попробовал использовать примеры ваших кодов, но ничего не выходит говорит


уже третий день бьюсь в поисках нормальной библиотеки для работы с Json

P.S. Exel 2007
Изменено: Georg£ - 28.04.2018 23:50:49
Страницы: 1
Наверх