首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQ:合并深度数据

JQ:合并深度数据
EN

Stack Overflow用户
提问于 2019-03-08 04:38:27
回答 1查看 27关注 0票数 0

如何合并与port属性匹配的stubs[]中的数据。

代码语言:javascript
复制
{
  "imposters": [
    {
      "protocol": "http",
      "port": 9000,
      "name": "sanc",
      "stubs": []
    },
    {
      "protocol": "http",
      "port": 9001,
      "name": "sanp",
      "stubs": [
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/user/access/resources"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA4yRQYvCMBCF="
              }
            }
          ]
        },
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/user/access/pilot"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA6quBQAAAP//AwBDv6ajAgAAAA=="
              }
            }
          ]
        }
      ]
    }
  ]
}






{
  "imposters": [
    {
      "protocol": "http",
      "port": 9000,
      "name": "sanc",
      "stubs": []
    },
    {
      "protocol": "http",
      "port": 9001,
      "name": "sanp",
      "stubs": [
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/pay/resources"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA4yRQYvCMBCF="
              }
            }
          ]
        },
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/pay/5"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA6quBQAAAP//AwBDv6ajAgAAAA=="
              }
            }
          ]
        }
      ]
    }
  ]
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-08 11:51:11

使用以下命令:

代码语言:javascript
复制
jq -s '
def merge:
 {"protocol": .[0].protocol,
  "port": .[0].port,
  "name": .[0].name,
  "stubs": (reduce .[].stubs as $item ([]; . + $item) | unique)};
[[.[].imposters[]] | group_by(.port) | .[] | merge] |
{"imposters": .}' a.json

可以生成这种类型的输出:

代码语言:javascript
复制
{
  "imposters": [
    {
      "protocol": "http",
      "port": 9000,
      "name": "sanc",
      "stubs": []
    },
    {
      "protocol": "http",
      "port": 9001,
      "name": "sanp",
      "stubs": [
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/pay/5"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA6quBQAAAP//AwBDv6ajAgAAAA=="
              }
            }
          ]
        },
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/pay/resources"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA4yRQYvCMBCF="
              }
            }
          ]
        },
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/user/access/pilot"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA6quBQAAAP//AwBDv6ajAgAAAA=="
              }
            }
          ]
        },
        {
          "predicates": [
            {
              "deepEquals": {
                "path": "/user/access/resources"
              }
            }
          ],
          "responses": [
            {
              "is": {
                "statusCode": 200,
                "body": "H4sIAAAAAAAAA4yRQYvCMBCF="
              }
            }
          ]
        }
      ]
    }
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55052429

复制
相关文章

相似问题

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