Siddhi - 如何生成JSON字符串

问题描述 投票:0回答:2

我正在尝试通过组合各种列来生成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数据类型。

任何帮助将不胜感激。

json siddhi
2个回答
2
投票

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

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

-2
投票

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

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

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

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

并在DB中写:

from SomeStream
select json:toObject(myfunction(json:getString(json,"$.name"))) as nameJSON
insert into postgresDB;
© www.soinside.com 2019 - 2024. All rights reserved.