我想將時間戳轉換為日期時間。
這是我的 JSON 輸入:
{
"preMarket_timestamp": 1646830062,
"regularMarket_timestamp": 1646773204,
"earningsTimestamp": 1643301000,
"earningsTimestampStart": 1651003200,
"earningsTimestampEnd": 1651521600
}
我想要的 JSON 結果:
{
"preMarket_timestamp": "2022/03/09 16:09:26",
"regularMarket_timestamp": "2022/03/09 00:00:04",
"earningsTimestamp": "2022/01/27 19:30:00",
"earningsTimestampStart": "2022/04/26 23:00:00",
"earningsTimestampEnd": "2022/05/02 23:00:00"
}
是否有操作來進行這種轉換,或者我可以用 Nifi 表達語言來做嗎?我被困在這里。
不必用“/”運算子分隔,也可以是“-”。
uj5u.com熱心網友回復:
使用ScriptedTransformRecord處理器:
Record Reader:JsonTreeReaderRecord Writer:JsonRecordSetWriterScript Language:GroovyScript Body:
import org.apache.nifi.serialization.record.RecordField;
import org.apache.nifi.serialization.record.RecordFieldType;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
def formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Istanbul"))
record.setValue("preMarket_timestamp_formatted", formatter.format(new Date(record.getAsLong("preMarket_timestamp")*1000)))
record.setValue("regularMarket_timestamp_formatted", formatter.format(new Date(record.getAsLong("regularMarket_timestamp")*1000)))
record.setValue("earningsTimestamp_formatted", formatter.format(new Date(record.getAsLong("earningsTimestamp")*1000)))
record.setValue("earningsTimestampStart_formatted", formatter.format(new Date(record.getAsLong("earningsTimestampStart")*1000)))
record.setValue("earningsTimestampEnd_formatted", formatter.format(new Date(record.getAsLong("earningsTimestampEnd")*1000)))
return record
輸出json:
{
"preMarket_timestamp" : 1646830062,
"regularMarket_timestamp" : 1646773204,
"earningsTimestamp" : 1643301000,
"earningsTimestampStart" : 1651003200,
"earningsTimestampEnd" : 1651521600,
"preMarket_timestamp_formatted" : "2022/03/09 15:47:42",
"regularMarket_timestamp_formatted" : "2022/03/09 00:00:04",
"earningsTimestamp_formatted" : "2022/01/27 19:30:00",
"earningsTimestampStart_formatted" : "2022/04/26 23:00:00",
"earningsTimestampEnd_formatted" : "2022/05/02 23:00:00"
}
uj5u.com熱心網友回復:
這種轉換可以通過Nifi Expression Language但它可能對你有用也可能沒用,因為你必須在最后構造新的 json 并且必須小心所有其他屬性及其型別。
我將展示一處房產。您可以輕松添加其他屬性,并應考慮其他非轉換屬性(如果存在)

評估JsonPath
在此處添加其他屬性

更新屬性
在此處添加其他屬性,如下所示
${preMarket_timestamp:padRight(13, '0'):toNumber():toDate():format("yyyy-MM-dd'T'HH:mm:ss.SSS")}

AttributesToJSON
您可以設定逗號分隔的屬性串列Attributes List來構造新的 json 形式的新屬性

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442407.html
上一篇:Swift:夏令時的日期決議
