Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Mishko от 17 Сентября 2020, 15:47:57

Название: Результат POST/GET запроса
Отправлено: Mishko от 17 Сентября 2020, 15:47:57
На POST/GET запрос приходит JASON ответ типа:
Код
"minutely":[{"dt":1600343100,"precipitation":0},{"dt":1600343160,"precipitation":0},{"dt":1600343220,"precipitation":0},{"dt":1600343280,"precipitation":0},
{"dt":1600343340,"precipitation":0},{"dt":1600343400,"precipitation":0},{"dt":1600343460,"precipitation":0},{"dt":1600343520,"precipitation":0}]
возможно ли его разобрать поэлементно стандартными способами скрипта?
Название: Re: Результат POST/GET запроса
Отправлено: Simple-Scada от 17 Сентября 2020, 20:59:47
Здравствуйте.

Для выполнения HTTP POST/GET запросов в Simple-Scada используется функция RequestHTTP (https://simple-scada.com/help/script/requesthttp.html). После получения ответа от сервера скада выполнит скрипты с событием "Выполнен POST/GET запрос" (https://simple-scada.com/help/script/postgetcompleted.html). В таких скриптах есть параметр Response типа TM_HTTPResponse (https://simple-scada.com/help/script/tmhttpresp.html), который содержит все данные ответа сервера. Причем скада автоматически выполнит синтаксический разбор JSON и можно отдельно обратиться к каждому свойству (см. описание класса TM_HTTPResponse (https://simple-scada.com/help/script/tmhttpresp.html) или эти примеры (https://simple-scada.com/help/script/weather.html)).
В Вашем случае в ответе содержится поле "minutely", которое представляет собой массив объектов. В скаде можно пройти по этому массиву в цикле, так:
Код: (delphi)
var
  I: Integer;
  aArray, aNode: TM_JSONNode;
begin
  aArray := Response['minutely']; // извлекаем массив "minutely" в aArray
  // проходим по всем элементам массива
  for I := 0 to aArray.Count - 1 do
  begin
    aNode := aArray.Nodes[I]; // извлекаем очередной элемент массива в aNode
    // здесь можем что-то сделать с элементом массива
    // например получить значение свойства "precipitation" так: aNode['precipitation'].AsInt
  end; 
end.