我正在尝试使用JOLT进行JSON转换,我想我已经接近了,但是我不能做的是向当前未出现的每个字段添加一个新字段。
我已经阅读了很多教程,下面的代码正是我期望的。但是,似乎没有在新的“名称”字段中添加。
{
"totalElements": 168,
"columns": {
"dimension": {
"id": "variables/daterangehour",
"type": "time"
},
"columnIds": [
"1"
]
},
"rows": [
{
"itemId": "119050300",
"value": "00:00 2019-06-03",
"data": [
120
]
},
{
"itemId": "119050805",
"value": "05:00 2019-06-08",
"data": [
98
]
},
{
"itemId": "119050923",
"value": "23:00 2019-06-09",
"data": [
172
]
}
]
}
这是我的震撼
[
{
"operation": "default",
"spec": {
"name": "chart1"
}
},
{
"operation": "shift",
"spec": {
"rows": {
"*": {
"value": "[&1].date",
"data": {
"*": "[&2].data"
}
}
}
}
}
]
这是输出:
[ {
"date" : "00:00 2019-06-03",
"data" : 120
}, {
"date" : "05:00 2019-06-08",
"data" : 98
}, {
"date" : "23:00 2019-06-09",
"data" : 172
} ]
我希望它像这样:
[ {
"name" : "graph1",
"date" : "00:00 2019-06-03",
"data" : 120
}, {
"name" : "graph1",
"date" : "05:00 2019-06-08",
"data" : 98
}, {
"name" : "graph1",
"date" : "23:00 2019-06-09",
"data" : 172
} ]
谁能告诉我我要去哪里错了?显然,default是用来添加新项目的,但是它似乎没有任何作用。
答案 0 :(得分:1)
您应该这样输入:"#chart1": "[&1].name"
哈希值放入经过编码的值,然后就不需要默认操作。
或者,如果您想使用默认操作:
[
{
"operation": "shift",
"spec": {
"rows": {
"*": {
"value": "[&1].date",
"data": {
"*": "[&2].data"
}
}
}
}
},
{
"operation": "default",
"spec": {
"*": {
"name": "chart1"
}
}
}
]