apache-nifi - NiFi:JoltTransformJSON 规范
问题描述
我有以下 JSON:
{
"results": [
{
"customerClient": {
"resourceName": "customers/7876562723/customerClients/8506630423",
"clientCustomer": "customers/8506630423",
"hidden": false,
"level": "1",
"manager": false,
"descriptiveName": "BMW",
"id": "85061423"
}
},
{
"customerClient": {
"resourceName": "customers/7876562723/customerClients/6736523142",
"clientCustomer": "customers/6736523142",
"hidden": false,
"level": "1",
"manager": true,
"descriptiveName": "Mercedes",
"id": "67363142"
}
}
}
],
"fieldMask": "customerClient.clientCustomer,customerClient.hidden,customerClient.level,customerClient.descriptiveName,customerClient.id,customerClient.manager"
}
我想要的是:
- 删除
fieldMask
参数,所以我不需要结果作为数组。 - 删除
results
和customerCient
。所以我的 JSON 应该是这样的:
{
"resourceName": "customers/7876562723/customerClients/8506630423",
"clientCustomer": "customers/8506630423",
"hidden": false,
"level": "1",
"manager": false,
"descriptiveName": "BMW",
"id": "85061423"
},
{
"resourceName": "customers/7876562723/customerClients/6736523142",
"clientCustomer": "customers/6736523142",
"hidden": false,
"level": "1",
"manager": true,
"descriptiveName": "Mercedes",
"id": "67363142"
}
要删除results
我正在使用SplitJson
的拆分值:$.results
. 现在我坚持使用 JOLT 规范对其进行修改。我怎样才能只用 进行上述操作JoltTransformJSON
?
解决方案
首先 - 你的 json 是错误的,你有一个额外的 }。
不使用颠簸
1 - 生成数据
$.results.[*].customerClient
2 - 使用as 属性评估jsonresults
3 - 替换文本为${results:replace(']',''):replace('[','')}
这会给你
{
"resourceName": "customers/7876562723/customerClients/8506630423",
"clientCustomer": "customers/8506630423",
"hidden": false,
"level": "1",
"manager": false,
"descriptiveName": "BMW",
"id": "85061423"
},
{
"resourceName": "customers/7876562723/customerClients/6736523142",
"clientCustomer": "customers/6736523142",
"hidden": false,
"level": "1",
"manager": true,
"descriptiveName": "Mercedes",
"id": "67363142"
}