从单个REST服务响应中读取多个JSON并将其放入数据库表 - Talend

时间:2018-06-10 16:41:46

标签: json database rest talend

enter image description here我搜索了很多但没找到确切的洗脱剂。 我有一个REST服务,作为响应,我在JSON中得到行和每一行,如下所示:

{"event":"click1","properties":{ "time":"2 dec 2018","clicks":29,"parent":"jbar","isLast":"NO"}}
{"event":"click2","properties":{ "time":"2 dec 2018","clicks":35,"parent":"jbar3","isLast":"NO"}}
{"event":"click3","properties":{ "time":"2 dec 2018","clicks":10,"parent":"jbar2","isLast":"NO"}}
{"event":"click4","properties":{ "time":"2 dec 2018","clicks":9,"parent":"jbar1","isLast":"YES"}}

每一行都是JSON(都是相似的)。我有一个数据库表,所有这些字段都作为列。我想循环遍历这些并上传Talend中的所有数据。我试过的是:

tRestClient--tNormalize--tExtractJsonFields--tOracleOutput

并在tExtractJsonFields组件中提供了循环条件和映射,但它不起作用并且向我发出错误,说“ json不能为null或为空enter image description here ” 这样做需要帮助。

2 个答案:

答案 0 :(得分:0)

由于您的webservice在响应中返回多个json对象,因此它不是有效的json而是json文档。
你需要把它分成单独的json对象 您可以在tNormalizetRESTClient之间添加tExtractJsonFields,并将" \ n"上的json文档规范化。字符。
错误" json can not be null or empty"是由于您的Jsonpath查询中的错误。您必须将循环查询设置为" $",并使用" event"," {{1}引用json属性}"

答案 1 :(得分:0)

您可以尝试一下吗?

在您的 tExtractJsonFields 中,将属性readBy配置为 没有循环的JsonPath