首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于键的不可合并的两个结果

基于键的不可合并的两个结果
EN

Stack Overflow用户
提问于 2022-02-14 09:52:15
回答 1查看 388关注 0票数 0

如果有人能提出一个自我教育的资源,将是非常感激的。目前,我正在根据什么是有效的例子来学习。如果术语不正确,很抱歉

我有两个json格式的结果(字典?)从发送到Netscaler的命令中:

Result1列出证书信息:

代码语言:javascript
复制
{
        "errorcode": 0,
        "message": "Done",
        "severity": "NONE",
        "sslcertkey": [
            {
                "certkey": "certkey1.pair",
                "daystoexpiration": 0,
                "status": "Expired",
                "subject": "easdm.test.com"
            },
            {
                "certkey": "certkey2.pair",
                "daystoexpiration": 0,
                "status": "Expired",
                "subject": " CN=timer.test.com"
            },

Result2列出了哪个证书绑定到虚拟服务器:

代码语言:javascript
复制
{
        "errorcode": 0,
        "message": "Done",
        "severity": "NONE",
        "sslcertkey_sslvserver_binding": [
            {
                "certkey": "certkey1.pair",
                "data": "1",
                "servername": "easdm_gslb_btfin_pri_lb_vs",
                "stateflag": "2",
                "version": 1
            },
            {
                "certkey": "certkey2.pair",
                "data": "2",
                "servername": "timer_gslb_btfin_pri_lb_vs",
                "stateflag": "2",
                "version": 1
            },

我希望将两个结果组合到Result3中,这样如果"certkey“在结果之间匹配,它就会将来自Result1的信息与Result2组合起来:

代码语言:javascript
复制
    {
        "certkey": "certkey1.pair",
        "daystoexpiration": 0,
        "status": "Expired",
        "subject": "easdm.test.com",
        "servername": "easdm_gslb_btfin_pri_lb_vs"
    },
    {
        "certkey": "certkey2.pair",
        "daystoexpiration": 0,
        "status": "Expired",
        "subject": " CN=timer.test.com",
        "servername": "timer_gslb_btfin_pri_lb_vs"
    },

每个结果中有100个条目,Result1中的一些结果在Result2中不匹配,因为在任何地方都不使用cert。我试着用一个简单的

代码语言:javascript
复制
    - debug:
         msg: '{{ result.json.sslcertkey | combine(result2.json.sslcertkey_sslvserver_binding, recursive=True)  }}'

但它似乎只显示了最后一场比赛,而不是所有的比赛。

EN

回答 1

Stack Overflow用户

发布于 2022-02-14 11:11:41

使用过滤器合并

代码语言:javascript
复制
  result3: "{{ result1.sslcertkey|
               community.general.lists_mergeby(result2.sslcertkey_sslvserver_binding,
                                               'certkey') }}"

给出

代码语言:javascript
复制
  result3:
  - certkey: certkey1.pair
    data: '1'
    daystoexpiration: 0
    servername: easdm_gslb_btfin_pri_lb_vs
    stateflag: '2'
    status: Expired
    subject: easdm.test.com
    version: 1
  - certkey: certkey2.pair
    data: '2'
    daystoexpiration: 0
    servername: timer_gslb_btfin_pri_lb_vs
    stateflag: '2'
    status: Expired
    subject: ' CN=timer.test.com'
    version: 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71109881

复制
相关文章

相似问题

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