如何使用 Siddhi 解析数组中的数组
How to parse array-of-arrays with Siddhi
我正在尝试使用 WSO2 Streaming Integrator / Siddhi 解析 JSON 事件流,但似乎无法将事件正确地放入流中。
我正在使用 dockerimage wso2/streaming-integrator:1.0.0
来 运行 这个。
我将以下输入流发送到 SiddhiApp(作为 HTTP POST 到 Siddhi 端点):
[
[ 1502942400000, "4261.480" ],
[ 1503982400000, "1010.312" ]
]
我的流定义如下:
@source(type='http', receiver.url='http://0.0.0.0:5010/stream', @map(type='json', @attributes(
timestamp = "[0]", sensorvalue = "[1]"
)))
define stream SensorAlertsStream (
timestamp long,
sensorvalue double,
我正在使用邮递员将数据发送到 WSO2 Streaming Integrator,但我得到的只是错误或根本没有响应。
我尝试了以下属性配置,均未成功:
- timestamp = "$.[0]", sensorvalue = "$.[1]"
- timestamp = "$[0]", sensorvalue = "$[1]"
- timestamp = "$[0][0]", sensorvalue = "$[0][1]"
- timestamp = "[0]", sensorvalue = "[1]"
我是否遗漏了源定义或映射属性中的某些内容,或者我是否应该得出结论,这个数组的数组输入结构无法使用 siddhi-json 映射进行解析?
如果有帮助;这是我简化的应用程序定义:
@App:name("SO-SensorApp")
@source(type='http', receiver.url='http://0.0.0.0:5010/stream', @map(type='json', enclosing.element="$[0]", @attributes( timestamp = "[0]", sensorvalue = "[1]" )) )
define stream SensorAlertsStream ( timestamp long, sensorvalue double );
@sink(type='log', @map(type='json'))
define stream log_values( sensorvalue double );
from SensorAlertsStream select sensorvalue insert into log_values;
我在 Siddhi Tooling 5.1.2 中使用 siddhi-map-json-5.0.6 对此进行了测试,以下配置将解决问题,enclosing.element- '$', timestamp = "[ 0]", 传感器值 = "[1]"
@source(type = 'http', receiver.url = 'http://0.0.0.0:8007/stream',
@map(type = 'json', enclosing.element = "$",
@attributes( timestamp = "[0]", sensorvalue = "[1]" )) )
@sink(type = 'log')
define stream SensorAlertsStream1 ( timestamp long, sensorvalue double );
我正在尝试使用 WSO2 Streaming Integrator / Siddhi 解析 JSON 事件流,但似乎无法将事件正确地放入流中。
我正在使用 dockerimage wso2/streaming-integrator:1.0.0
来 运行 这个。
我将以下输入流发送到 SiddhiApp(作为 HTTP POST 到 Siddhi 端点):
[
[ 1502942400000, "4261.480" ],
[ 1503982400000, "1010.312" ]
]
我的流定义如下:
@source(type='http', receiver.url='http://0.0.0.0:5010/stream', @map(type='json', @attributes(
timestamp = "[0]", sensorvalue = "[1]"
)))
define stream SensorAlertsStream (
timestamp long,
sensorvalue double,
我正在使用邮递员将数据发送到 WSO2 Streaming Integrator,但我得到的只是错误或根本没有响应。
我尝试了以下属性配置,均未成功:
- timestamp = "$.[0]", sensorvalue = "$.[1]"
- timestamp = "$[0]", sensorvalue = "$[1]"
- timestamp = "$[0][0]", sensorvalue = "$[0][1]"
- timestamp = "[0]", sensorvalue = "[1]"
我是否遗漏了源定义或映射属性中的某些内容,或者我是否应该得出结论,这个数组的数组输入结构无法使用 siddhi-json 映射进行解析?
如果有帮助;这是我简化的应用程序定义:
@App:name("SO-SensorApp")
@source(type='http', receiver.url='http://0.0.0.0:5010/stream', @map(type='json', enclosing.element="$[0]", @attributes( timestamp = "[0]", sensorvalue = "[1]" )) )
define stream SensorAlertsStream ( timestamp long, sensorvalue double );
@sink(type='log', @map(type='json'))
define stream log_values( sensorvalue double );
from SensorAlertsStream select sensorvalue insert into log_values;
我在 Siddhi Tooling 5.1.2 中使用 siddhi-map-json-5.0.6 对此进行了测试,以下配置将解决问题,enclosing.element- '$', timestamp = "[ 0]", 传感器值 = "[1]"
@source(type = 'http', receiver.url = 'http://0.0.0.0:8007/stream',
@map(type = 'json', enclosing.element = "$",
@attributes( timestamp = "[0]", sensorvalue = "[1]" )) )
@sink(type = 'log')
define stream SensorAlertsStream1 ( timestamp long, sensorvalue double );