Apache kafka WSO2 SP-带有JSON属性的Kafka源代码

Apache kafka WSO2 SP-带有JSON属性的Kafka源代码,apache-kafka,wso2,kafka-consumer-api,kafka-producer-api,wso2sp,Apache Kafka,Wso2,Kafka Consumer Api,Kafka Producer Api,Wso2sp,我正在尝试使用以下代码从Kafka读取JSON数据: @source(type = 'kafka', bootstrap.servers = 'localhost:9092', topic.list = 'TestTopic', group.id = 'test', threading.option = 'single.thread', @map(type = 'json')) define stream myDataStream (json object); 但失败,错误如下: [201

我正在尝试使用以下代码从Kafka读取JSON数据:

@source(type = 'kafka', bootstrap.servers = 'localhost:9092', topic.list = 'TestTopic', 
group.id = 'test', threading.option = 'single.thread', @map(type = 'json'))

define stream myDataStream (json object);
但失败,错误如下:

[2019-03-27_11-39-32_103]错误 {org.wso2.extension.siddhi.map.json.sourcemapper.JsonSourceMapper}- 流“myDataStream”没有名为“ABC”的属性, 但是接收到的事件{“event”:{“ABC”:“1”}没有。因此,删除该消息。 检查json字符串的默认映射格式是否正确

我已尝试添加属性

@source(type = 'kafka', bootstrap.servers = 'localhost:9092', 
topic.list = 'TestTopic', group.id = 'test', 
threading.option = 'single.thread', 
@map(type = 'json', @attributes(ABC = '$.ABC')))
语法错误:

在流“myDataStream”中定义的“json”处出错,属性“json”为 未映射


非常感谢您的帮助。

流的语法有错误

define stream myDataStream (ABC string);

在这里,属性名是JSON消息的关键,在本例中,ABC

非常感谢。我将有100对来自卡夫卡的键/值对。所以我们必须将所有这些键映射到输入流吗?或者有没有一种方法可以将JSON作为一个对象来访问,并从中解析出所需的键?类似$.ABC或json.ABC的内容?是的,您可以使用自定义映射仅获取所需的键,@map(type='json',@attributes(key1='$.ABC.key'))定义流myDataStream(key1字符串);非常感谢,这在很大程度上帮助了我。我的JSON将是
{“event”:{“A”:“1”、“B”:“2”、“C”:“3”}
,并将属性添加为
@attributes(JSON='$.event')
。但是分配给变量的字符串不是JSON格式,它转换为JSON key=value格式,例如
{A=1,B=2,C=3}
。因此,我无法使用
JSON:getString(JSON,$.A”)
进一步使用JSON。或者有没有办法将
{A=1,B=2,C=3}
转换回wso2sp或siddhi中的
{A:“1”,“B:”2”,“C:”3“}
,请纠正我的错误,而不是在源代码处映射属性,您希望在整个分析流程中保持JSON字符串的原样吗?下游操纵?