【发布时间】:2018-10-25 00:47:25
【问题描述】:
我正在尝试转换以下 JSON
{
"data": {
"keyvalues": [
{
"key": "location",
"value": "sydney, au"
},
{
"key": "weather",
"value": "sunny"
}
]
},
"food": {
"name": "AllFoods",
"date": "2018-03-08T09:35:17-03:00",
"count": 2,
"food": [
{
"name": "chocolate",
"date": "2018-03-08T12:59:58-03:00",
"rating": "10",
"data": null
},
{
"name": "hot dog",
"date": "2018-03-08T09:35:17-03:00",
"rating": "7",
"data": {
"keyvalues": [
{
"key": "topping",
"value": "mustard"
},
{
"key": "BUN type",
"value": "toasted"
},
{
"key": "servings",
"value": "2"
}
]
}
}
]
}
}
进入,像这样更简单的东西,使用 JOLT(在 NIFI 中)。将第一个顶级food 属性(name、date、count)带入header,然后将嵌套的food 数组向上拉,然后将food.data.keyvalues 展平为字典/哈希图。
{
"header": {
"location": "sydney, au",
"weather": "sunny",
"date": "2018-03-08",
"count": 2
},
"foods": [
{
"name": "chocolate",
"date": "2018-03-08T12:59:58-03:00",
"rating": "10"
},
{
"name": "hot dog",
"date": "2018-03-08T09:35:17-03:00",
"rating": "7",
"topping": "mustard",
"bun_type": "toasted",
"servings": "2"
}
]
}
我的第一个 data 部分正在工作,但我不确定如何处理嵌套的 food 元素。顶层food info 需要移动到header 部分,第二层food 数组需要展平data.keyvalues。
当前规范...(仅处理顶部data.keyvalues)
[
{
"operation": "shift",
"spec": {
"data": {
"keyvalues": {
"*": { "@value": "@key" }
}
}
}
}
]
【问题讨论】: