Groovy脚本覆盖第一个字节?

问题描述 投票:1回答:2

嗨所以这个字符串我正在创建并附加在groovy中以某种方式腐蚀第一个字节,我不知道为什么会发生这种情况。它是第二个字符串创建。在这个脚本中我正在进行查询,第一个工作但第二个初始化以某种方式弄乱了字符串中的第一个字节,我必须做一个额外索引的子字符串(它是两个,因为我正在初始化一个逗号)。任何见解都会非常感激!!

注意:我在Anypoint studio 6.4.4中使用mulesoft runtime 3.8.5。不确定这是否是原因,但它是我心目中的候选人......

 flowVars.queryIds = "Id IN ("
 for (Integer i = 0; i < payload.size(); i++) {
     flowVars.queryIds += "\'" + payload[i].Id + "\',"
 }
  flowVars.queryIds = flowVars.queryIds.substring(0,flowVars.queryIds.size() - 1) + ")"

  //Assigning comma because a random byte is getting inserted and this makes that error explicit & deterministic
  flowVars.queryFields = ",";
  for (String key : payload[0].keySet()) {
      flowVars.queryFields += key + ",";
  }
  //Skipping over custom field isMatch
  flowVars.queryFields = flowVars.queryFields.substring(2, flowVars.queryFields.size() - 9);

  return payload
groovy mule mule-studio
2个回答
1
投票

所以我发现这个问题发生的原因实际上是因为我正在解析的csv文件已损坏(我认为它是mulesoft并且是错误的)。这篇博客比我更能解释这个问题。感谢您对Rdmueller的groovy代码的评论!你的建议肯定会更清洁。 https://medium.freecodecamp.org/a-quick-tale-about-feff-the-invisible-character-cd25cd4630e7


0
投票

我无法重现您的问题,但由于您使用groovy,您可以编写更短的代码:

flowVars.queryIds = "Id IN ("
flowVars.queryIds += payload.collect{"'${it.Id}'"}.join(", ")
flowVars.queryIds += ")"
flowVars.queryFields = payload[0].keySet().join(", ");

这应该以更容易理解的方式产生相同的输出

© www.soinside.com 2019 - 2024. All rights reserved.