使用KSTREAM或KSQL将java JSON数组转换为JSON对象
我有以下格式的数据输入卡夫卡
{"WHS":[{"Character Set":"UTF-8","action":"finished","Update-Date-Time":"2020-04-11 09:00:02:25","Number":0,"Abbr":"","Name":"","Name2":"","Country-Code":"","Addr-1":"","Addr-2":"","Addr-3":"","Addr-4":"","City":"","State":""}]}
我想把它变成这样
{"Character Set":"UTF-8","action":"finished","Update-Date-Time":"2020-04-11 09:00:02:25","Number":0,"Abbr":"","Name":"","Name2":"","Country-Code":"","Addr-1":"","Addr-2":"","Addr-3":"","Addr-4":"","City":"","State":""}
我试图使用ksql实现扁平化,但ksql还不支持数组
我试着用下面的代码使用kstream
将其展平
builder.stream(inputTopic).flatMapValues(Object -> Arrays.asList()).to(outputTopic);
但它没有产生任何产出。对此,我们将不胜感激
# 1 楼答案
KSQL/ksqlDB确实支持阵列。下面是如何用它来实现你的要求:
您可以将其写入另一个流(主题):
如果要展平生成的结构,也可以这样做: