Получить объект в потоке из Сиддхи

У меня есть расширение Siddhi, которое возвращает следующую информацию, например:

{
 "licenseKey": "WxyzChXjhJ-dgjfZfHnL9-bWd4e2vxjD-eIs5hDu0To-VOxL111BAj",
 "siteUrl": "http://www.URL.net/",
 "clientPublicId": "CLIENT1",
 "host": "www.urlclient.net"
}

{
 "licenseKey": "WxyzChXjhJ-dgjfZfHnL9-bWd4e2vxjD-eIs5hDu0To-VOxL111BAj",
 "siteUrl": "http://www.URL2.net/",
 "clientPublicId": "CLIENT2",
 "host": "www.urlclient2.net"
}

Я хочу сохранить эту информацию в потоке, и я хочу фильтровать информацию, используя атрибут "clientPublicId".

Я использую следующий код, wlist:whitelist() - это мое расширение Siddhi.

from sensorStream[temperature>98.6]
select wlist:whitelist() AS arreglo
insert into outputStream;

Моя проблема в том, что outputStream создается с атрибутом с именем "arreglo", поэтому я не могу фильтровать по clientPublicId.

Не могли бы вы мне помочь.

1 ответ

Если вы хотите обработать JSON или XML в Siddhi, тогда вы можете использовать для этого поддержку расширений map в Siddhi. Вы можете создать карту, используя map:createFromJSON(<string> JSONstring) а затем получить доступ к значениям через map:get(<Map> map, <Object> key), Обратите внимание, что вы должны наложить выходные данные карты перед использованием cast(<object> toBeCasted, <string> castTo),

Например: cast(map:get(dataMap, 'clientPublicId'),'string')

Надеюсь, что это решит проблему.

Другие вопросы по тегам