Fn::Jq

调用内部函数Fn::Jq,支持Jq功能,获取满足过滤条件后的JSON字符串。

函数声明

  • JSON

    {
      "Fn::Jq": [
        method,
        script,
        object
      ]
    }
  • YAML

    • 完整函数的语法。

      Fn::Jq: method,script,object
    • 缩写形式。

      !Jq [method,script,object]

参数信息

  • method:必选,字符串类型。

    取值:

    • First:符合条件的第一个值。

    • All:符合条件的所有值。

  • script:必选,字符串类型。Jq脚本,可作为JSON字符串的过滤器。Jq功能详情请参见Jq文档

  • object:必选,JSON字符串。

返回值

满足过滤器条件的字符串。

使用示例

单个过滤器

使用过滤器.test过滤出的值取第一个。当给定一个JSON字符串作为输入时,它将在键test处产生值;如果值不存在,则为null。

!Jq
  - First
  - .test
  - '{"test":"test"}'

返回值:

test

多个过滤器

说明

多个过滤器之间可使用竖线(|)进行连接。

使用过滤器.parameters[]过滤出的内容,再次通过新的过滤器进行过滤,它们之间通过竖线(|)进行连接。给定一个JSON字符串作为输入时,它将按照顺序在满足过滤器条件.parameters[]{"param_name": .name, "param_type":.type}的键处产生值;如果值不存在,则为null。您需要根据过滤器条件先查看Key为parameters的值,再在返回值中查找满足Key为name和Key为type的值作为最终返回值,当条件中的值不存在时则为null。

!Jq
  - All
  - '.parameters[] | {"param_name": .name, "param_type":.type}'
  - changeSet:
      items: []
      kind: git
    id: 2013-12-27_00-09-37
    parameters:
      - name: PKG_TAG_NAME
        value: trunk
      - name: GIT_COMMIT
        value: master
      - name: TRIGGERED_JOB
        value: trunk-buildall

返回值:

- param_name: PKG_TAG_NAME
- param_name: GIT_COMMIT
- param_name: TRIGGERED_JOB