Arrays Nifi,Json数据
我将json输入数据设置为 如果列类型=93(日期时间):将值转换为:Arrays Nifi,Json数据,arrays,json,apache-nifi,jolt,Arrays,Json,Apache Nifi,Jolt,我将json输入数据设置为 如果列类型=93(日期时间):将值转换为:yyyy-MM-dd HH:MM:ss.SSSZ 因此,目标输出是 你知道怎么解决那个案子吗 非常感谢,您可以使用ExecuteScript并利用Groovy解析Json输入和日期,并使用SimpleDataFormat将其格式化为您想要的格式 一个简单的例子: import java.text.SimpleDateFormat import java.util.Date import groovy.json.JsonSlu
yyyy-MM-dd HH:MM:ss.SSSZ
因此,目标输出是
你知道怎么解决那个案子吗
非常感谢,您可以使用
ExecuteScript
并利用Groovy
解析Json输入和日期,并使用SimpleDataFormat
将其格式化为您想要的格式
一个简单的例子:
import java.text.SimpleDateFormat
import java.util.Date
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
import org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets
flowFile = session.get()
if(!flowFile)return
def text = ''
session.read(flowFile, {inputStream ->
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
} as InputStreamCallback)
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText(text)
def columnsSize = object.columns.size
0.upto(columnsSize - 1) {
if (object.columns[it].column_type == 93 ) {
oldDate = object.columns[it].value
sdfmt2= new SimpleDateFormat('dd-M-yyyy')
parsedDate = sdfmt2.parse(oldDate)
object.columns[it].value = parsedDate
output = JsonOutput.toJson(object)
flowFile = session.write(flowFile, {outputStream ->
outputStream.write(output.getBytes(StandardCharsets.UTF_8))
} as OutputStreamCallback)
session.transfer(flowFile, REL_SUCCESS)
}
}
非常感谢您的建议,但是Groovy有一个错误。我认为问题是简单的格式('dd-M-yyyy')=>因此无法解析“2018年9月14日星期五21:05:02 UTC”,这就像是为了展示。请按照您的愿望进行更新。您可以查看可用的格式
[ {
"id" : "IboECKV "
}, {
"col2" : "2018-09-14 21:05:02.000Z"
}, {
"col3" : 10
}, {
"col4" : 0
}]
import java.text.SimpleDateFormat
import java.util.Date
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
import org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets
flowFile = session.get()
if(!flowFile)return
def text = ''
session.read(flowFile, {inputStream ->
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
} as InputStreamCallback)
def jsonSlurper = new JsonSlurper()
def object = jsonSlurper.parseText(text)
def columnsSize = object.columns.size
0.upto(columnsSize - 1) {
if (object.columns[it].column_type == 93 ) {
oldDate = object.columns[it].value
sdfmt2= new SimpleDateFormat('dd-M-yyyy')
parsedDate = sdfmt2.parse(oldDate)
object.columns[it].value = parsedDate
output = JsonOutput.toJson(object)
flowFile = session.write(flowFile, {outputStream ->
outputStream.write(output.getBytes(StandardCharsets.UTF_8))
} as OutputStreamCallback)
session.transfer(flowFile, REL_SUCCESS)
}
}