Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Иногда веб-сервисы отправляют информацию в формате JSON или XML, и чтобы получить данные их приходится разбирать.

Для упрощения этой задачи появилось действие Обработка JSON/XML:

Парсинг

Первый вариант работы - это разбор JSON/XML строки.

Можно сразу провести обработку используя JSONPath или XPath. Результат выполнения действия заносится в переменную проекта Json или Xml соответственно, и данные можно просмотреть в окне Переменные.

Для доступа к значениям доступны макросы. Например: {-Json.employees.Count-} или {-Json.employees[2].firstName-}

После того как парсинг прошел успешно, в любом поле ввода где поддерживаются макросы будут полные подсказки.

Сохранение в список или таблицу

Данные могут содержать массивы и их удобно занести в список для последующей обработки после того как нужный текст был распаршен.

Свойство - указывает на поле, которое будет разбираться как массив. Здесь возможно использовать вложенность, указывая через точку (например: store.employees). Если поле не является массивом, то в список заносится один элемент.

Подсвойство - так как в массивах могут находиться сложные объекты, можно указать какое значение из него брать для списка.

Запись данных в таблицу работает аналогичным образом, только в каждую колонку можно записать свое подсвойство.

Особенности XML

У XML имеются атрибуты узлов. Для доступа к ним в макросах используются квадратные скобки со строковым значением. (Например: {-Xml.PurchaseOrder[«PurchaseOrderNumber»]-}).

Работа в коде

В C# объекты JSON и XML находятся в объекте project. Они имеют тип dynamic. Из-за этого редактор кода не может полноценно показывать выпадающие подсказки.

Пример кода работы с XML:

project.Xml.FromString(project.Variables["XmlText"].Value);
return project.Xml.PurchaseOrder.Address[0]["Type"];

Пример 2:

var list = new List<string>();
for(int i = 0; i < project.Xml.PurchaseOrder.Address.Count; i++)
{
list.Add(project.Xml.PurchaseOrder.Address[i].Name.Value);
}
return string.Join(", ", list);

Пример 3:

var list = new List<string>();
foreach(dynamic i in project.Xml.PurchaseOrder.Address)
{
list.Add(i.Name.Value);
}
return string.Join(", ", list);

Аналогично происходит и с Json. Однако стоит учесть, что доступ к свойствам происходит без использования “Value”.

Пример:

return project.Json.employees[1].firstName;

Конструктор XPath/JsonPath

Инструмент полезен когда нужно составить правильных XPath/JSONPath.

Он позволяет выделить кусок в исходном тексте и, если это возможно, автоматически создать выражение.

  • No labels