2016-08-16 54 views
1

我需要從REST請求創建JSON對象的集合(請參閱文章Talend - URI based on values obtained from a list)。 web服務提供機構的集合中的格式如下:Talend - 如何創建JSON對象的集合

{ "COD_AGENCIA":"521800300", "NAME":"AGENCIA01"}, 
{ "COD_AGENCIA":"521999999", "NAME":"AGENCIA02"}, 
... 
(20 other values) 
... 

另一個web服務,從機構代碼,提供與該機構的城市中,格式如下:

{"COD_MUN":"5202155","NOME_MUN":"CITY01"}, 
{"COD_MUN":"5202502","NOME_MUN":"CITY02"}, 
... 

我創建了一個獲得代理關係的工作,通過tFlowToIterate,我通過tRest調用多個請求,更改代理機構代碼。我的工作是這樣的:

myJob

當我打開最後tExtractJSONField的在TLOG輸出,所有的城市在一旦被打印的代碼和名稱。如果我爲tFileOutputJSON更改tLog,則最終文件只包含最後一次被稱爲城市的迭代。

我需要改變,以能夠在以下格式的單個作業的多個JSON對象產生:

{"COD_AGENCIA":"521800300", 
"NAME":"AGENCIA01", 
"CIDADES":[{"COD_MUN":"5202155","NOME_MUN":"CITY01"}, 
      {"COD_MUN":"5202502","NOME_MUN":"CITY02"} 
    ] 
} 

{"COD_AGENCIA":"521999999", 
"NAME":"AGENCIA02", 
"CIDADES":[{"COD_MUN":"5244887","NOME_MUN":"CITY03"}, 
      {"COD_MUN":"5254522","NOME_MUN":"CITY04"} 
    ] 
} 

回答

1

我曾在以前的項目同樣的麻煩。

在Talend中,您不能在JSON末尾添加行,但可以使用CSV。我使用CSV來獲取所有行,然後使用JSON發送它們。

在你的情況下,你的JSON中有多個層次,所以它會更復雜! Talend流只有一個級別,因此生成多個級別JSON已經變得複雜了。我建議看一下tJsonDoc* components。我沒有嘗試過自己,因爲我的「CSV解決方法」符合我的需求,但是您可以使用此工具創建複雜的結構,所以我想您可以在文件末尾添加。