Groovy скрипт перезаписывает первый байт? - PullRequest
0 голосов
/ 14 сентября 2018

Привет, поэтому эта строка, которую я создаю и добавляю в groovy, как-то портит первый байт, и я понятия не имею, почему это происходит.Это вторая строка создания.В этом сценарии я делаю запрос, и первый работает, но вторая инициализация как-то портит первый байт в строке, и мне приходится делать подстроку дополнительного индекса (это два, потому что я инициализирую запятую).Любое понимание будет очень полезно !!

Примечание: я использую Mulesoft Runtime 3.8.5 в Anypoint Studio 6.4.4.Не уверен, что это причина, но я думаю, что это кандидат ...

 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

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Итак, я выяснил, что причина этой проблемы на самом деле в том, что файл CSV, который я анализирую, поврежден (я подумал, что это mulesoft и ошибся).Этот блог делает большую работу по объяснению проблемы, чем я мог.Спасибо за ваш отзыв о отличном коде, хотя Rdmueller!Определенно намного чище с вашими предложениями.https://medium.freecodecamp.org/a-quick-tale-about-feff-the-invisible-character-cd25cd4630e7

0 голосов
/ 15 сентября 2018

Я не могу воспроизвести вашу проблему, но так как вы используете groovy, вы можете написать свой код немного короче:

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

это должно привести к тому же выводу более понятным способом

...