首页 > 解决方案 > 在 WSO2 流处理器/正则表达式中将文本格式转换为 json,以便在 WSO2SP 中进行自定义文本映射

问题描述

我有一个 wso2 流处理器代码,我从 kafka文本格式接收输入,因为 debezium mongodb 连接器给出了一个冗长的输出,并且它不是发送到 WSO2 的有效 json。因此,我将其作为文本接收,并计划使用正则表达式来仅获取我需要的有效负载部分。我无法弄清楚如何将此文本格式转换为 json,以便我可以将其发送到另一个 kafka 流并对此进行自定义 json 映射。

我正在尝试的另一种方法:我也在尝试自定义文本映射:

@source(type='kafka',
        topic.list='demo',
        partition.no.list='0',
        threading.option='single.thread',
        group.id="group",
        bootstrap.servers='localhost:9092',
 @map(type='text',fail.on.missing.attribute='false', regex.A='(.*)',
                @attributes(id = 'A[0]')))
define stream transactionstream1(id string);

示例 Json:

{"_id":{"$oid":"342fs"},"code":"ffssefse","name":"test1","desc":"description1","transRefId":"esfef3423des","amount":1000,"currency":"INR","requestId":null,"redeemedCashcode":null,"sender":{"id":"5d9c0dedcf71a09664922042","name":"tat","phone":"3242324"}}

从上面的 json 获取代码属性的正则表达式是(?:"code":")(.*?)(?:") 但是 wso2 regex.A不接受这个。

这就是为什么目前我正在以文本格式获取整个数据并尝试转换为 json

还有其他方法吗?或在 wso2 流处理器中编写正则表达式的其他约定?

我需要从 wso2sp 中的上述 json 文本中获取自定义映射中的各个属性。

标签: regexapache-kafkawso2siddhiwso2sp

解决方案


由于您的正则表达式由“组成,因此您需要使用 3 个双引号将其转义,如下所示,

 regex.A = """(?:"code":")(.*?)(?:")""",


推荐阅读