JOLT 转换删除除一个字段之外的所有字段

JOLT transformation remove all fields except one

我想从 json 中删除除名为 foo 的字段之外的所有字段。我使用了如下所示的转换规范:

[
  {
    "operation": "remove",
    "spec": {
      "^(?!foo).*$": ""
    }
  }
]

我尝试在 http://jolt-demo.appspot.com/#inception 上执行此操作,但它不起作用,它输出未转换的输入 json。我做错了什么吗?

是的,"shift" 确实支持除“”以外的任何 "regex" 匹配,因此“^(?!foo).$”是不会工作。

我认为你的情况更好,使用 "shift" 匹配 "foo" 并将其复制到输出。与 "shift" 规范不匹配的任何内容都不会复制到输出中。

规格

[
  {
    "operation": "shift",
    "spec": {
      // matches top level key "foo" in the intput, and copies the 
      //  value at that location to the output map with key "foo".
      "foo" : "foo"
    }
  }
]

Shift 将数据从输入复制到新的输出,所有其他操作(默认、删除、基数等)修改输入。