Парсинг JSON

Парсинг JSON элементов с помощью макроса шаблона вывода [HANDLEJSON] (используйте этот способ)


Примечание: У макроса [HANDLEJSON]…[/HANDLEJSON] есть альтернативная версия [HANDLEJSON_F]…[/HANDLEJSON_F] (она работает точно также, но выполняется намного раньше относительно других функций и макросов).


Вызов макроса HANDLEJSON







Заготовка макроса (для вставки в шаблон вывода)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[HANDLEJSON]
{OUT_TEMPLATE}{/OUT_TEMPLATE}
▒{KEY()}
▒{KEY({LEVEL})}
▒{LIST()}{/LIST}
{VALUES_REPLACE}{/VALUES_REPLACE}
{PARAMS}values_json_decode{/PARAMS}
{LIST_SEP}{br2}{/LIST_SEP}
{JSON_DATA}
 
 
 
{/JSON_DATA}
[/HANDLEJSON]

Описание параметров макроса

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[HANDLEJSON]
{OUT_TEMPLATE}Шаблон для парсинга JSON, содержащий операторы KEY и LIST + любые другие данные{/OUT_TEMPLATE}
 
Операторы KEY и LIST вставляются в шаблон для парсинга JSON (внутрь параметра OUT_TEMPLATE).
{KEY(путь к получаемому элементу по JSON структуре)} - парсинг одного из элементов JSON
{LIST(путь к родительскому элементу по JSON структуре)}вложенные операторы KEY и LIST для получения данных из каждого цикла LIST{/LIST} - парсинг всех элементов из указанного родительского
 
{VALUES_REPLACE}Сюда можно вставить правила функции поиск замены для обработки получаемых данных{/VALUES_REPLACE}
{PARAMS}values_json_decode - этот параметр раскодирует получаемые данные из JSON кодировки{/PARAMS}
{LIST_SEP}Сюда вставьте разделитель циклов оператора LIST{/LIST_SEP}
{JSON_DATA}
 
Сюда вставьте JSON код (или границу парсинга с JSON кодом). JSON должен быть целостным (без обрезанных скобок). Перед работой ознакомьтесь с синтаксисом формата JSON!
 
{/JSON_DATA}
[/HANDLEJSON]

Примечание: Когда используется два {LIST} (один вложен в другой), то в дочернем {LIST} вместо {KEY} можно использовать {PARENT_KEY}. {PARENT_KEY} работает аналогично {KEY}, но берет данные из кода родительского {LIST} (а не из вложенного {LIST}).


Важно знать

Для отображения структуры (дерева) JSON пользуйтесь следующим функционалом

Content Downloader (парсинг JSON)


Примеры создания пути для оператора KEY

Content Downloader (парсинг JSON)


Использование параметра {LEVEL} в операторе {KEY} (для более удобного контроля над получением значений элементов с учетом уровня их вложенности в дереве JSON)

Content Downloader (инструменты для парсинга элементов JSON)

Content Downloader (инструменты для парсинга элементов JSON)


Примеры создания пути для оператора LIST

В LIST получит все элементы, которые содержатся в указанном родительском. В LIST могут вкладываться сколько угодно KEY (для парсинга элементов из цикла) и LIST (для создания вложенных циклов).

Пути во вложенных в LIST элементах (KEY и другие LIST) указываются относительно НЕ корня JSON, а относительно родительского элемента основного LIST.

Content Downloader (парсинг JSON)

В итоге получим 3 элемента с именем Prop, взятых из трех дочерних элементов родительского Additional.





Парсинг JSON элементов с помощью специализированных операторов функции поиск-замены


Парсинг ВСЕХ вложенных дочерних элементов (по имени родительского)

Content Downloader

Раскрыть спойлер

На некоторых сайтах нужные данные представлены в виде JSON, например:

1
{"PARAMS":{"USE_STORE":true,"USE_MIN_AMOUNT":true,"MIN_AMOUNT":2},"ELEMENT":{"CATALOG_SUBSCRIBE":true},"SORT_PROPS":["OTTENOK"],"OFFERS":{"40981":{"ID":40981,"NAME":"Name1"},"40979":{"ID":40979,"NAME":"Name2"}}}

Где: {"ID":40981,"NAME":"Name1"} и {"ID":40979,"NAME":"Name2"} два нужных элемента. При том, что внутри каждого элемента может быть разное количество открывающихся и закрывающихся скобок, что делает парсинг таких данных не совсем удобным.

Для парсинга элементов JSON в программе есть специальная функция поиск-замены (вставляется на отдельную строку):

1
[JSON]{start}{/start}{end}{/end}{container}{/container}|[MARKER]{res}[/MARKER]

Где параметры start и end служат для обозначения начала и конца всего блока JSON в HTML-коде (их можно не указывать, если вы работаете только с JSON).
Параметр container служит для обозначения имени родительского для нужных элементов. Для парсинга JSON-кода из примера выше параметр container следует задать следующим образом:

1
[JSON]{start}{/start}{end}{/end}{container}offers{/container}|[MARKER]{res}[/MARKER]

Это правило поиск-замены следует прописывать для исходного кода (shift+ctrl+r), чтобы границы парсинга брали контент уже из обработанного кода WEB-документа. После установки правильных параметров, функция поиск-замена добавить [MARKER]…[/MARKER] к каждому элементу JSON. Далее можно будет легко спарсить данные с помощью повторяющихся границ, задав их начало, как [MARKER], а конец, как [/MARKER].


Content Downloader


Content Downloader


Для более глубокого понимания метода парсинга JSON смотрите видео (выше).


PS: Для быстрой вставки [MARKER]…[/MARKER] в границы парсинга пользуйтесь соответствующим пунктом соответствующего контекстного меню в инструменте задания границ парсинга

Content Downloader



Парсинг ОДНОГО указанного элемента по пути к нему (с параметром {path})

Content Downloader

Раскрыть спойлер



Смотрите также:

– Как добавить к основному документу (который парсите) дополнительные подгружаемые данные (чтобы задать границы парсинга и с подгруженными данными)


Дополнительные примеры
Пример для случая, когда родительский элемент не назван:




Еще один пример:




Еще один пример (смотрите с 10:57):




Еще один пример:




1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 1, средний балл: 5.00)
Loading...
Автор: admin, 30 May 2019
Рубрики: Новости

Последние статьи

css.php