1

我想从 json 中删除除名为foo. 我使用了如下所示的转换规范:

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

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

4

1 回答 1

4

是的,“shift”确实支持“”以外的任何“正则表达式”匹配,所以“^(?!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 将数据从输入复制到新的输出,所有其他操作(默认、删除、基数等)都会修改输入。

于 2017-09-30T03:53:59.363 回答