2017-06-21 68 views
-3

我有一個這樣的輸入文件:如何使用tmap操作Talend中的JSON文件?

{ 
    "name": "ABC", 
    "fields": { 
    "xyz": "{{xyz}}", 
    "pqr": "{{pqr)}}", 
    "tuv": "{{tuv)}}", 
    } 
} 

我想這樣的輸出:

{ 
    /"name/": /"ABC/", 
    /"fields/": { 
    /"xyz/": /"{{xyz}}/", 
    /"pqr/": /"{{pqr)}}/", 
    /"tuv/": /"{{tuv)}}/", 
    } 
} 

我在TMAP所做的是:

row1.content.toString().replaceAll("\"","\\\"") 

但它是不工作。 請幫我獲得預期的輸出。

+0

你使用'replaceAll()'的返回值嗎? –

+0

我只是使用這些組件: tfileinputraw ---(主)---> TMAP ---(主)---> tfileoutputraw和TMAP 和TMAP我已經做到了這一點: row1.content .toString()。replaceAll(「\」「,」\\\「」) 除了這些事情我沒有做任何事情。 –

+0

我從上面的tmap代碼得到的返回值與我提供的輸入相同。 –

回答

0

使用row1.content.toString().replace("\"","/\"")替換使用不同邏輯(使用正則表達式)的特定字符而不是String.replaceAll

你只需要逃避報價,使其工作。

隨着String.replaceAll作爲javadoc的說:

注意,在替換字符串中的反斜槓(\)和美元符號($)可能會造成比如果它被視爲文字替代的結果是不同的串;看Matcher.replaceAll。如果需要,使用Matcher.quoteReplacement(java.lang.String)來抑制這些字符的特殊含義。

所以要注意它的行爲。