我正在尝试动态更改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"
} ]
}
真的很感谢任何帮助。
答案 0 :(得分:3)
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