【问题标题】:Add default field to Jolt JSON transformation将默认字段添加到 Jolt JSON 转换
【发布时间】:2026-02-24 00:30:02
【问题描述】:

我正在尝试使用 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
} ]

谁能告诉我哪里出错了?显然默认用于添加新项目,但它似乎没有做任何事情。

【问题讨论】:

    标签: json jolt


    【解决方案1】:

    你应该这样写:"#chart1": "[&1].name"Hash puts harcoded value 然后你就不需要操作默认了。 或者如果你想使用操作默认:

    [
      {
        "operation": "shift",
        "spec": {
          "rows": {
            "*": {
              "value": "[&1].date",
              "data": {
                "*": "[&2].data"
              }
            }
          }
        }
      },
      {
        "operation": "default",
        "spec": {
          "*": {
            "name": "chart1"
          }
        }
      }
    ]
    

    【讨论】:

    • 太棒了!非常感谢玛格达。这真的很有帮助。