Нифи выполнить скрипт процессора Groovy, чтобы заменить сына - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь динамически изменить формат даты моего файла json перед отправкой.

import groovy.json.*

def ff = session.get()
if(!ff) return
ff = session.write(ff, {rawIn, rawOut->
    //parse flowfile content to maps & arrays
    def json = new JsonSlurper().parse(rawIn, "UTF-8")
    //change json 
    json.revision.version =  (json.revision.version as Long) + 1
    //write to output changed content
    rawOut.withWriter("UTF-8"){ it.write( JsonOutput.toJson(json) )}
} as StreamCallback)
session.transfer(ff, REL_SUCCESS)

Это самое близкое, что я смог получить, собрав воедино различные учебники. Это мой JSON, это только одно значение данных и даты, но их будет много:

{
  "test" : [ {
    "data" : "119050300",
    "date" : "00:00 2019-06-03"
  } ]
}

Как я могу использовать приведенный выше скрипт для преобразования моей даты в формат даты и времени, подобный этому:

{
  "test" : [ {
    "data" : "119050300",
    "date" : "2019-06-03'T'10:00"
  } ]
}

Любая помощь будет очень признательна.

1 Ответ

3 голосов
/ 10 июня 2019

код nifi-groovy в порядке, вам просто нужно изменить //change json раздел

def json = new groovy.json.JsonSlurper().parseText('''{
  "test" : [ 
  {
    "data" : "119050300",
    "date" : "00:00 2019-06-03"
  },
  {
    "data" : "119050301",
    "date" : "01:23 2019-06-03"
  }
  ]
}''')
//change json
json.test.each{e->
    //use regexp to change date format because you just need to swap two parts 
    e.date = e.date.replaceAll(/(\d{2}:\d{2}) (\d{4}-\d{2}-\d{2})/,'$2\'T\'$1')
}
//change json end
...