在nifi中,我尝试转换一个JSON,它的键数量是可变的,但是总是有一个“date”键。我想转换JSON,把日期的字符串值转换成一个json对象。但是我没有得到我需要的。我可以使用哪个操作/规范来完成预期的输出。输入:
{
"name": "val1",
"date": "2021-05-19T00:53:20+00:00"
}
质量标准:
[
{
"operation": "shift",
"spec": {
"@0": "wrapper"
}
}, {
"operation": "default",
"spec": {
"wrapper": {
"date": { "$date": "${date_attr}" }
}
}
}
]
期望产量
{
"wrapper": {
"name": "val1",
"date": {"$date": "2021-05-19T00:53:20+00:00"}
}
}
我得到的
{
"wrapper": {
"name": "val1",
"date": "2021-05-19T00:53:20+00:00"
}
}
2条答案
按热度按时间jslywgbw1#
只需执行一步shift转换沿着
$
运算符的转义字符(\\
)就足以使用,例如这里我们将通过使用**@(1,date)中的第一个参数1向上一级**作为嵌套对象中的参数
Edit:考虑到您只需要覆盖属性date,其他属性保持原样,不需要单独添加,因此使用以下代码,该代码同样只有一步shift转换
7kqas0il2#
在
default
的情况下,如果规范中提到的键在输入json中丢失,那么它就会被添加,否则就不会发生任何更改。这里您试图将节点推到更高的级别,这可以通过创建和分配临时节点来实现。\\
是转义字符。