我搜索了很多但没找到确切的洗脱剂。 我有一个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或为空 ” 这样做需要帮助。
答案 0 :(得分:0)
由于您的webservice在响应中返回多个json对象,因此它不是有效的json而是json文档。
你需要把它分成单独的json对象
您可以在tNormalize
和tRESTClient
之间添加tExtractJsonFields
,并将" \ n"上的json文档规范化。字符。
错误" json can not be null or empty
"是由于您的Jsonpath查询中的错误。您必须将循环查询设置为" $
",并使用" event
"," {{1}引用json属性}"
答案 1 :(得分:0)
您可以尝试一下吗?
在您的 tExtractJsonFields 中,将属性readBy配置为 没有循环的JsonPath