簡體   English   中英

jq 解析 json 並生成 json output

[英]jq to parse json and generate json output

我正在尋找一種解決方案,我需要在刪除幾行后解析 json 文件(input.json)並創建 json 文件作為 output(output.json)。

只有少數版本會同時具有這兩個值(ubuntu,centos),大多數版本將具有 ubuntu 或 centos。

我嘗試了以下命令;

jq '.[]' input.json

它給出了完整的列表但不知道如何獲取 ubuntu 和 centos 下的值。 任何指導都是有益的。

輸入。json

[
  {
    "Version": "1.0",
    "ubuntu": {
      "ver": "1.0.0",
      "filename": "1_0_0.log",
      "sourceUrl": "https://example.com/log/1_0_0.log"
    }
  },
  {
    "Version": "1.1",
    "ubuntu": {
      "ver": "1.0.1",
      "filename": "1_0_1.log",
      "sourceUrl": "https://example.com/log/1_0_1.log"
    }
  },
  {
    "Version": "1.4",
    "ubuntu": {
      "ver": "1.0.4",
      "filename": "1_0_4.log",
      "sourceUrl": "https://example.com/log/1_0_4.log"
    },
    "centos": {
      "ver": "1.0.4",
      "filename": "1_0_4.pdf",
      "sourceUrl": "https://example.com/log/1_0_4.pdf"
    }
  }
]

output.json

[
  {
    "Version": "1.0",
    "ubuntu": {
      "ver": "1.0.0",
      "filename": "1_0_0.log"
    }
  },
  {
    "Version": "1.1",
    "ubuntu": {
      "ver": "1.0.1",
      "filename": "1_0_1.log"
    }
  },
  {
    "Version": "1.4",
    "ubuntu": {
      "ver": "1.0.4",
      "filename": "1_0_4.log"
    },
    "centos": {
      "ver": "1.0.14",
      "filename": "1_0_4.pdf"
    }
  }
]

您可以使用以下 JQ 命令刪除每個sourceUrl

jq 'del(.. | .sourceUrl?)' input.json

del()文檔


Output:

[
  {
    "Version": "1.0",
    "ubuntu": {
      "version": "1.0.0",
      "filename": "1_0_0.log"
    }
  },
  {
    "Version": "1.1",
    "ubuntu": {
      "version": "1.0.1",
      "filename": "1_0_1.log"
    }
  },
  {
    "Version": "1.4",
    "ubuntu": {
      "version": "1.0.4",
      "filename": "1_0_4.log"
    },
    "centos": {
      "version": "1.0.4",
      "filename": "1_0_4.pdf"
    }
  }
]

在線嘗試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM