使用 Jolt 过滤结果

Using Jolt to filter results

给定以下输入:

[
  {
    "order": "SI867-5309"
  },
  {
    "order": ""
  },
  {
    "order": "SI555-1212"
  },
  {
    "order": {
      "status": "Bad"
    }
  }
]

我想用 jolt 翻译成:

[
  {
    "order": "SI867-5309"
  },
  {
    "order": "SI555-1212"
  }
]

我已经接近:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "order": {
          "SI*": "@1"
        }
      }
    }
  }
]

但事实并非如此,因为它虽然确实过滤掉了以 SI 开头的值,但它随后将这些值放入键中。我想我遗漏了一些明显的东西...

是的,您已经很接近结果了,只需将 "@1" 替换为 { "$": "[].&2" }

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "order": {
          "SI*": {
            "$": "[].&2"
          }
        }
      }
    }
  }
]

其中 "$" 运算符匹配 key&2 匹配 value 并在前面加上 &2[].分别用来分隔元素。