Arrays Nifi,Json数据

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

我将json输入数据设置为

如果列类型=93(日期时间):将值转换为:
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)
    }
}