我有一个 JOLT,我用它来将温度值转换为摄氏度。我在 NIFI 流程中使用它,得到了具有不同值的不同 JSON 输入。当输入 JSON 中有温度字段时,我的 JOLT 工作正常,但当输入 JSON 中没有温度字段时,我的 JOLT 会生成一个额外的温度列。仅当输入 JSON 中有温度字段时,我才需要我的 JOLT 将温度转换为摄氏度。
输入 JSON
[
{
"rx_state": 0,
"tx_id": 3,
"temp_1": 54.8,
"trans_battery_flag": 0,
"ts": 1729646742,
"station_name": "abc"
}
]
JOLT 表达
[
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"Temp_Cel": "=doubleSum(@(1,temp_1),-32)",
"temp_1": "=divideAndRound(2,@(1,Temp_Cel),1.8)"
}
}
},
{
"operation": "remove",
"spec": {
"*": {
"Temp_Cel": ""
}
}
}
]
仅当 JSON 中存在“temp_1”字段时,我才需要 JOLT 转换温度。例如,以下 JSON 不应在 JOLT 之后给我额外的温度字段
[
{
"bar_absolute": 30.206,
"tz_offset": 3600,
"bar_sea_level": 30.483,
"bar_offset": -0.001,
"bar_trend": 0.016,
"ts": 1729646742,
"station_name": "abc"
}
]
您可以通过在属性后面添加?运算符来处理存在性问题,例如
例如,只需在第一个规范中替换
"temp_1"
为"temp_1?"