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

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

Автор Тема: Сообщение JSON от OPC MQTT  (Прочитано 2685 раз)

SID

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Сообщение JSON от OPC MQTT
« : 06 Февраля 2024, 08:55:27 »
Здравствуйте! Нужно пропарсить сообщение формата JSON полученное от брокера MQTT через OPC сервер. В Scade есть TM_JSONNode, но я нашел только описания на работу с ним по HTTP. Возможно ли передать в этот класс полученное сообщение для его разбора? И можно ли при его помощи собрать сообщение для отправки?

Сообщение имеет следующий вид:
Код
var Teg: String;
Teg := ${idVirtualDevice1}@{GET_SCHEME_LIST}@[{"scheme_id":1,"scheme_name":"Схема 1"},{"scheme_id":2,"scheme_name":"Схема 2"},
{"scheme_id":3,"scheme_name":"Схема 3"},{"scheme_id":4,"scheme_name":"Схема 4"},{"scheme_id":5,"scheme_name":"Схема 5"},
{"scheme_id":6,"scheme_name":"Схема 6"},{"scheme_id":7,"scheme_name":"Схема 7"},{"scheme_id":8,"scheme_name":"Схема 8"}]!

« Изменён: 06 Февраля 2024, 16:30:32 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Сообщение JSON от OPC MQTT
« Ответ #1 : 06 Февраля 2024, 16:38:09 »
Здравствуйте.

Цитировать
Возможно ли передать в этот класс полученное сообщение для его разбора?
Нет, данный класс используется при обработке ответов от HTTP-серверов. Ответ от сервера автоматически разбирается и помещается в экземпляр класса TM_JSONNode с которым можно работать в скриптах "Выполнен POST/GET запрос". Поэтому вручную преобразовать строку в формате JSON в объект не получится.

Цитировать
И можно ли при его помощи собрать сообщение для отправки?
Т.к. JSON это текстовый формат, то значение можно просто записать в виде строки, например: myVar.Value := '[{"prop1": 1}, {"prop2": 2}]';

SID

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Re: Сообщение JSON от OPC MQTT
« Ответ #2 : 07 Февраля 2024, 03:28:39 »
Понял. Спасибо за ответ! В настоящий момент так и делаю, для каждого запроса прописываю отдельно инструкции по разборке/сборке в скрипте. Но это не универсальный метод.