Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Результат POST/GET запроса  (Прочитано 1556 раз)

Mishko

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Результат POST/GET запроса
« : 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}]
возможно ли его разобрать поэлементно стандартными способами скрипта?
« Изменён: 17 Сентября 2020, 21:00:09 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Результат POST/GET запроса
« Ответ #1 : 17 Сентября 2020, 20:59:47 »
Здравствуйте.

Для выполнения HTTP POST/GET запросов в Simple-Scada используется функция RequestHTTP. После получения ответа от сервера скада выполнит скрипты с событием "Выполнен POST/GET запрос". В таких скриптах есть параметр Response типа TM_HTTPResponse, который содержит все данные ответа сервера. Причем скада автоматически выполнит синтаксический разбор JSON и можно отдельно обратиться к каждому свойству (см. описание класса TM_HTTPResponse или эти примеры).
В Вашем случае в ответе содержится поле "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.