Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用tmap在Talend中操作JSON文件?_Java - Fatal编程技术网

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(“\”,“/\”)
。你能确认输出是你想要的吗?代码使用了错误的斜杠。如果输出是正确的,请查看我的实际答案。