首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >级联嵌套字段

级联嵌套字段
EN

Stack Overflow用户
提问于 2019-06-20 10:41:52
回答 1查看 59关注 0票数 0

我正在尝试连接一个对象列表的两个属性。

输入

代码语言:javascript
复制
{
    "image": "golang:1.3",
    "unapproved": [
        "CVE-2016-5421",
        "CVE-2019-5010"
    ],
    "vulnerabilities": [
        {
            "featurename": "curl",
            "featureversion": "7.38.0-4+deb8u2",
            "vulnerability": "CVE-2016-5421",
            "namespace": "debian:8",
            "description": "Use-after-free vulnerability in libcurl before 7.50.1 allows attackers to control which connection is used or possibly have unspecified other impact via unknown vectors.",
            "link": "https://security-tracker.debian.org/tracker/CVE-2016-5421",
            "severity": "High",
            "fixedby": "7.38.0-4+deb8u4"
        },
        {
            "featurename": "python2.7",
            "featureversion": "2.7.9-2",
            "vulnerability": "CVE-2019-5010",
            "namespace": "debian:8",
            "description": "Test description",
            "link": "https://security-tracker.debian.org/tracker/CVE-2019-5010",
            "severity": "Unknown",
            "fixedby": ""
        }
    ]
}

期望输出

顶级image属性应用作vulnerabilities列表中每个对象的description的前缀。

代码语言:javascript
复制
{
  "image": "golang:1.3",
  "unapproved": [
    "CVE-2016-5421",
    "CVE-2019-5010"
  ],
  "vulnerabilities": [
    {
      "featurename": "curl",
      "featureversion": "7.38.0-4+deb8u2",
      "vulnerability": "CVE-2016-5421",
      "namespace": "debian:8",
      "description": "golang:1.3 - Use-after-free vulnerability in libcurl before 7.50.1 allows attackers to control which connection is used or possibly have unspecified other impact via unknown vectors.",
      "link": "https://security-tracker.debian.org/tracker/CVE-2016-5421",
      "severity": "High",
      "fixedby": "7.38.0-4+deb8u4"
    },
    {
      "featurename": "python2.7",
      "featureversion": "2.7.9-2",
      "vulnerability": "CVE-2019-5010",
      "namespace": "debian:8",
      "description": "golang:1.3 - Test description",
      "link": "https://security-tracker.debian.org/tracker/CVE-2019-5010",
      "severity": "Unknown",
      "fixedby": ""
    }
  ]
}

当前尝试

我现在的过滤器:

代码语言:javascript
复制
{image, unapproved, vulnerabilities: [{description: (.image + " - " + .vulnerabilities[].description)}] }

输出

代码语言:javascript
复制
{
  "image": "golang:1.3",
  "unapproved": [
    "CVE-2016-5421",
    "CVE-2019-5010"
  ],
  "vulnerabilities": [
    {
      "description": "golang:1.3 - Use-after-free vulnerability in libcurl before 7.50.1 allows attackers to control which connection is used or possibly have unspecified other impact via unknown vectors."
    },
    {
      "description": "golang:1.3 - Test description"
    }
  ]
}

不幸的是,我只能用当前的过滤器返回description字段。我想要使用修改后的description字段的完整漏洞对象。

问题

如何连接嵌套字段并保留对象的其他属性?

jqPlay

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-20 11:09:54

最简单的解决办法可能是:

代码语言:javascript
复制
.image as $prefix
| .vulnerabilities[].description |= $prefix + " - " + .

换句话说:使用.description更新所有的.image值,如下所示。

相当于,也许也不那么隐晦:

代码语言:javascript
复制
.image as $prefix
| .vulnerabilities |= map(.description |= $prefix + " - " + .)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56684251

复制
相关文章

相似问题

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