首页 > 解决方案 > 使用 Jolt 过滤结果

问题描述

给定以下输入:

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

我想用 jolt 翻译成:

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

我已经接近:

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

但那不是它,因为它虽然过滤掉以 SI 开头的值,但它会将值放入键中。我想我错过了一些明显的东西......

标签: jsonjolt

解决方案


是的,你是如此接近结果,只需替换"@1"{ "$": "[].&2" }

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

where "$"operator 匹配key&2匹配value和 prepend &2with[].分别用于分隔元素。


推荐阅读