Siddhi-如何生成JSON字符串

时间:2019-03-28 06:10:59

标签: json siddhi

我正在尝试通过组合各种列来生成JSON字符串,并将JSON保存到具有JSON数据类型的Postgres表中。从documentation可以清楚地了解到如何读取feom JSON字符串。

define stream InputStream(json string);
from InputStream
select json:getString(json,"$.name") as name
insert into OutputStream;

但是我们可以在运行中构建JSON并插入到表中吗?像...

select '{"myname":json:getString(json,"$.name")}' as nameJSON
insert into postgresDB

其中nameJSON将是Postgres中的JSON数据类型。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以使用JSON:setElement从属性创建JSON

from OutputStream
select json:setElement("{}", "$", json:getString(json,"$.name"), "myname") as value
insert into TempStream;

答案 1 :(得分:-2)

我做了类似的事情,但是我将数据发送到Elasticsearch而不是postgresDB。

您可以使用json:toObject函数从字符串生成对象。为了生成字符串,我使用了script

define function myfunction[JavaScript] return string {
    var name = data[0];
    return '{myname: '+name+ '}';
};

注意:这只是一个例子,我的原始代码生成了一个更大,更复杂的JSON。这种方法的优点是我们还可以在字符串(JSON数组)中编写数组。

要写入数据库:

from SomeStream
select json:toObject(myfunction(json:getString(json,"$.name"))) as nameJSON
insert into postgresDB;
相关问题