通过 HTTP 使用 InfluxDB 和 WSO2 流处理器在有效载荷内插入双引号

Insert double quote inside a payload with InfluxDB and WSO2 Stream Processor through HTTP

我正在开发一个流式进程,它可以在我的 MySQL 数据库中获取信息并将它们解析为 NoSQL 数据库(使用 InfluxDB)。 此时,我可以通过 HTTP 请求发送 NoSQL 查询,但前提是我想发送整数值。 问题是当我想发送一个字符串值时,我不能在我的 "Text" 有效负载中使用双引号,因为它会关闭我的属性。 如果我在我的字符串值周围使用单引号,InfluxDB returns 一个错误:

    [2018-12-28_11-07-18_302] INFO     {org.wso2.siddhi.core.stream.output.sink.LogSink} - log : Event{timestamp=1545991638301, data=[{"error":"unable to parse 'SEQTIME value=267,x_date_create={1}': invalid boolean"} ], isExpired=false} (Encoded) 

这是我的代码:

@sink(type='http-request',
publisher.url='http://localhost:8086/write?db=bd_sensor_values',
method='POST',
headers="'Authorization: Basic XXXXX','Content-Type: application/x-www-form-urlencoded','cache-control: no-cache','Host:localhost:8086'",
sink.id="httpRequest_id",
@map(type='text', @payload("SEQTIME value={{id}},x_date_create={{x_date_create}}")))
define stream httpRequest (id int, x_date_create string);

问题出在@payload 属性内,x_date_create。 我尝试对我的双引号进行编码,但它不起作用(也许我做错了?)

有什么想法吗?谢谢!

在字符串中使用双引号和转义引号。请参阅 InfluxDB tutorial 中的示例:

weather,location=us-midwest temperature="too\"hot\"" 1465839830100400200

您可以使用以下方式为您的结果添加双引号

@payload(""" "SEQTIME value"="{{id}}","x_date_create"="{{x_date_create}}" """)))