首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json_query使用包含在另一个列表中搜索失败的项

json_query使用包含在另一个列表中搜索失败的项
EN

Stack Overflow用户
提问于 2020-05-09 01:42:04
回答 1查看 1.5K关注 0票数 1

我有示例列表,我希望选择其类型在wanted_list中的项目。

代码语言:javascript
复制
- name: Get item based on anther list
  vars: 
    samples:
      - { item: 10, type: sample-1 },
      - { item: 20, type: sample-11 },
      - { item: 30, type: sample-2 }
    wanted_list: [ sample-11, sample-2 ]
    query: "[?contains('{{wanted_list|to_json}}', type)]"
  debug:
    var: samples | json_query(query)

结果:

代码语言:javascript
复制
TASK: Get item based on anther list
ok: [localhost] => {
    "samples|json_query(query)": [
        {
            "item": 10,
            "type": "sample-1"
        },
        {
            "item": 20,
            "type": "sample-11"
        },
        {
            "item": 30,
            "type": "sample-2"
        }
    ]
}

我所期望的是它只会返回第20和第30项。但是它实际上返回了所有的3,它看起来像样本-1匹配列表项目样本的一部分-11。

但是基于JMESPath doc 包含

布尔包含(数组字符串$subject,任意$search) 如果$subject是数组,则如果数组中的元素之一等于提供的$search值,则此函数返回true。

因此,样本-1不等于样本-11,然后它不应该被选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 04:01:54

您将希望这样使用引用文字JSON的反勾符,因为单引号只适用于字符串

代码语言:javascript
复制
  - name: Get item based on anther list
    vars: 
      samples:
        - { item: 10, type: sample-1 }
        - { item: 20, type: sample-11 }
        - { item: 30, type: sample-2 }
      wanted_list: [ sample-11, sample-2 ]
      query: "[?contains(`{{ wanted_list | to_json }}`, type)]"
    debug:
      msg: '{{ samples | json_query(query) }}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61690744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档