Java 如何使用tmap在Talend中操作JSON文件?
我有这样一个输入文件:Java 如何使用tmap在Talend中操作JSON文件?,java,Java,我有这样一个输入文件: { "name": "ABC", "fields": { "xyz": "{{xyz}}", "pqr": "{{pqr)}}", "tuv": "{{tuv)}}", } } { /"name/": /"ABC/", /"fields/": { /"xyz/": /"{{xyz}}/", /"pqr/": /"{{pqr)}}/", /"tuv/": /"{{tuv)}}/", } } ro
{
"name": "ABC",
"fields": {
"xyz": "{{xyz}}",
"pqr": "{{pqr)}}",
"tuv": "{{tuv)}}",
}
}
{
/"name/": /"ABC/",
/"fields/": {
/"xyz/": /"{{xyz}}/",
/"pqr/": /"{{pqr)}}/",
/"tuv/": /"{{tuv)}}/",
}
}
row1.content.toString().replaceAll("\"","\\\"")
我想要这样的输出:
{
"name": "ABC",
"fields": {
"xyz": "{{xyz}}",
"pqr": "{{pqr)}}",
"tuv": "{{tuv)}}",
}
}
{
/"name/": /"ABC/",
/"fields/": {
/"xyz/": /"{{xyz}}/",
/"pqr/": /"{{pqr)}}/",
/"tuv/": /"{{tuv)}}/",
}
}
row1.content.toString().replaceAll("\"","\\\"")
我在tmap中所做的是:
{
"name": "ABC",
"fields": {
"xyz": "{{xyz}}",
"pqr": "{{pqr)}}",
"tuv": "{{tuv)}}",
}
}
{
/"name/": /"ABC/",
/"fields/": {
/"xyz/": /"{{xyz}}/",
/"pqr/": /"{{pqr)}}/",
/"tuv/": /"{{tuv)}}/",
}
}
row1.content.toString().replaceAll("\"","\\\"")
但它不起作用。
请帮助我获取预期的输出。使用
row1.content.toString().replace(“\”,“/\”)
替换特定字符,而不是使用使用使用不同逻辑(使用正则表达式)的String.replaceAll
你只需要避开引用就可以了
正如javadoc所说:
请注意,替换字符串中的反斜杠(\)和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果;见Matcher.replaceAll。如果需要,可以使用Matcher.quoteReplacement(java.lang.String)来抑制这些字符的特殊含义
因此,请注意它可能具有的行为。是否使用
replaceAll()
的返回值?我只使用以下组件:tfileinputraw--(main)--->tmap--(main)--->tfileoutputraw,在tmap和tmap中,我已经完成了以下操作:row1.content.toString().replaceAll(“\”,“\ \ \”)除此之外,我没有做任何事情。我从上面的tmap代码中得到的返回值与我提供的输入值相同。如果你想用java中的/“
替换”
,那么请使用replaceAll(“\”,“/\”)
。你能确认输出是你想要的吗?代码使用了错误的斜杠。如果输出是正确的,请查看我的实际答案。