Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: SID от 06 Февраля 2024, 08:55:27

Название: Сообщение JSON от OPC MQTT
Отправлено: SID от 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"}]!

Название: Re: Сообщение JSON от OPC MQTT
Отправлено: Simple-Scada от 06 Февраля 2024, 16:38:09
Здравствуйте.

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

Цитировать
И можно ли при его помощи собрать сообщение для отправки?
Т.к. JSON это текстовый формат, то значение можно просто записать в виде строки, например: myVar.Value := '[{"prop1": 1}, {"prop2": 2}]';
Название: Re: Сообщение JSON от OPC MQTT
Отправлено: SID от 07 Февраля 2024, 03:28:39
Понял. Спасибо за ответ! В настоящий момент так и делаю, для каждого запроса прописываю отдельно инструкции по разборке/сборке в скрипте. Но это не универсальный метод.