Получить объект в потоке из Сиддхи
У меня есть расширение 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')
Надеюсь, что это решит проблему.