如何解决如何在 Jolt Transform 规范中将对象添加到 Json
在 nifi 中,我试图用可变数量的键转换 JSON,但总是有一个“日期”键。我想转换 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"
}
}
解决方法
在 default
的情况下,如果规范中提到的键在输入 json 中丢失,则添加它,否则可能不会发生任何更改。
在这里你试图将一个节点推到更高的层次,这可以通过创建和分配一个临时节点来实现。
\\
是转义字符。
[
{
"operation": "shift","spec": {
"date": "date1","@0": "."
}
},{
"operation": "remove","spec": {
"date": ""
}
},{
"operation": "shift","spec": {
"date1": "wrapper.date.\\$date","@0": "wrapper"
}
},"spec": {
"wrapper": {
"date1": ""
}
}
}
]
,
仅一步 shift 转换以及 \\
运算符的转义字符 ($
) 就足以使用例如
[
{
"operation": "shift","spec": {
"name": "wrapper.name","date": { "@(1,date)": "wrapper.&.\\$date" }
}
}
]
我们要去的地方一个升级,使用@(1,date)中的第一个参数1,因为一直停留在嵌套对象
Edit :考虑到您只需要覆盖 date 属性,并保留其他属性而不单独添加,请使用以下再次只有单个shift转换步骤
[
{
"operation": "shift","spec": {
"*": "wrapper.&",date)": "wrapper.&.\\$date" }
}
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。