Json NIFI:如何替换'';替换txt中的新行

Json NIFI:如何替换'';替换txt中的新行,json,regex,apache-nifi,Json,Regex,Apache Nifi,我想在nifi处理器中解析json响应我有如下json数据: { "squadName": "Super hero squad", "homeTown": "Metro City", "formed": 2016, "secretBase": "Super tower", "active": true, "Data":{"row": [ { "name": "Molecule Man", "age": 29, "secretId

我想在nifi处理器中解析json响应我有如下json数据:

{
  "squadName": "Super hero squad",
  "homeTown": "Metro City",
  "formed": 2016,
  "secretBase": "Super tower",
  "active": true,
  "Data":{"row": [
    {
      "name": "Molecule Man",
      "age": 29,
      "secretIdentity": "Dan Jukes",
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name": "Madame Uppercut",
      "age": 39,
      "secretIdentity": "Jane Wilson",
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    },
    {
      "name": "Eternal Flame",
      "age": 1000000,
      "secretIdentity": "Unknown",
      "powers": [
        "Immortality",
        "Heat Immunity",
        "Inferno",
        "Teleportation",
        "Interdimensional travel"
      ]
    }
  ]
}
我想把它转换成这样的格式:

  {"name": "Molecule Man", "age": 29,  "secretIdentity": "Dan Jukes", "powers":  ["Radiation resistance", "Turning tiny", "Radiation blast"]}
   {name": "Molecule Man", "age": 29,  "secretIdentity": "Dan Jukes", "powers":  ["Radiation resistance", "Turning tiny", "Radiation blast"]}
   {"name": "Molecule Man", "age": 29,  "secretIdentity": "Dan Jukes", "powers":  ["Radiation resistance", "Turning tiny", "Radiation blast"]}
我已经在evaluatejsonpath处理器中使用了此表达式: $.Data['row']多亏了它,我得到了行数据,然后我在replacetext processor中使用了另一个表达式:[]来摆脱这个“[]”,但我不能用新行替换“,”,我如何才能做到这一点?

解决方案 如果您只想将每一行放在一行中,您可以简单地删除所有没有前缀为
}、
的换行符。在你上一段描述了你的工作之后,你得出了这样的结论:

{
  "name": "Molecule Man",
  "age": 29,
  "secretIdentity": "Dan Jukes",
  "powers": [
    "Radiation resistance",
    "Turning tiny",
    "Radiation blast"
  ]
},
{
  "name": "Madame Uppercut",
  "age": 39,
  "secretIdentity": "Jane Wilson",
  "powers": [
    "Million tonne punch",
    "Damage resistance",
    "Superhuman reflexes"
  ]
},
{
  "name": "Eternal Flame",
  "age": 1000000,
  "secretIdentity": "Unknown",
  "powers": [
    "Immortality",
    "Heat Immunity",
    "Inferno",
    "Teleportation",
    "Interdimensional travel"
  ]
}
现在,将
(?)替换为
(将此留空,它不是空格)。您可以在此处看到此更改:

您还可以通过使用以下替换将多个空格的所有出现更改为单个空格来摆脱多个空格:替换
(?使用
(当然是单个空格,而不是下划线)(演示)


它是如何工作的? 我已经将工作分为两个阶段(您可以使用一个正则表达式来完成这项工作,但为了简单起见,我进行了划分)。首先,我查找文本中所有没有前面有
},
的换行符,因为这些不是我们要删除的换行符

删除后,我们几乎得到了我们想要的-但它很难看,因为有多个空格和格式错误。因此,我再次搜索所有空白字符(不包括
},
行,因为换行符也是一个空白字符),然后用一个空格更改所有多个出现

最终结果:

{ "name": "Molecule Man", "age": 29, "secretIdentity": "Dan Jukes", "powers": [ "Radiation resistance", "Turning tiny", "Radiation blast" ]},
{ "name": "Madame Uppercut", "age": 39, "secretIdentity": "Jane Wilson", "powers": [ "Million tonne punch", "Damage resistance", "Superhuman reflexes" ]},
{ "name": "Eternal Flame", "age": 1000000, "secretIdentity": "Unknown", "powers": [ "Immortality", "Heat Immunity", "Inferno", "Teleportation", "Interdimensional travel" ]} 

你要用什么来替换coma?\n?还有-你不应该(而且不是更容易)使用任何现有的框架来解析JSON吗?另外,我不明白你想如何用逗号替换换行符来摆脱换行符(除非你的格式有问题)。我想在{}之后替换逗号使用新行,只需捕获
},
并将其替换为
}\n
。这将用新行替换
}
旁边的所有逗号。这不是您提供的“我想将其转换为此格式”,因为这将在您已有的地方添加新行…我如何在regex中实现它?您能给我回复任何在线regex simuator吗?我找到了一个,但它对我没有任何用处。请检查我的答案,如果您对我的解决方案有进一步的问题,请将它们作为评论发布在那里。至于regex simulator,我建议使用regex101.com(我的答案中有链接演示)。好的,我在搜索值中使用了这个:(?s:((?很抱歉,我无法帮助您使用Nifi,因为我以前从未使用过它。我的解决方案只涉及正则表达式-也许有人可以在这方面为您提供更多帮助。另外,不要将
}、
替换为
\n
,这不会给您预期的结果。请再次阅读我的解决方案。