簡體   English   中英

遍歷文本文件並使用 powershell 將條目添加到 JSON

[英]Iterate through a text file and add entries to the JSON using powershell

我有一個包含以下動態生成的數據的文本文件,因此 repo.txt 的內容不斷變化

  repo.txt -> Content as below
    repo1
    repo2
    repo_3

和一個 JSON 文件

  template.json -> Content as below
  {

  "name": "new-report-test-1",
  "resources": {
    "repositories": [
      {
        "name": "repoa"
      },
      {
        "name": "repo_b"
      }
    ]
  },
    "filters": {
      "severities": [
        "High"
      ]
    }

  }

現在我想從 repo.txt 文件中讀取 repo 列表並將 template.json 更新到下面


{

  "name": "new-report-test-1",
  "resources": {
    "repositories": [
     {
        "name": "repoa"
      },
      {
        "name": "repo_b"
      },
      {
        "name": "repo1"
      },
       {
        "name": "repo2"
      },
       {
        "name": "repo_3"
      }   
    ]
  },
    "filters": {
      "severities": [
        "High",
        "Medium",
        "Critical"
      ]
    }

  }
 

我有這個 bash 腳本可以完成這項工作,但我不確定如何將它翻譯成 PoweShell。 任何意見將不勝感激

cat ./tmpgen_reponames.txt | while read repoEntry do echo " Repository: $repoEntry" cat <<< $(jq --arg REPOID "$repoEntry" '[ .[] , {"name":$REPOID} ]' tmpgen_repoarray.json) > tmpgen_repoarray.json done

您可以在 PowerShell 中使用ConvertFrom-Json將您的 Json 轉換為對象,然后按照面向對象的方法將新的自定義對象添加到.resources.repositories屬性並將新值MediumCritical添加到.filters.severities屬性您的 Json,最后,使用ConvertTo-Json將其轉換回 Json 字符串:

$json = Get-Content path\to\template.json -Raw | ConvertFrom-Json
$json.resources.repositories = @(
    $json.resources.repositories
    (Get-Content path\to\repo.txt).Trim() | ForEach-Object {
        [pscustomobject]@{ Name = $_ }
    }
)
$json.filters.severities = @(
    $json.filters.severities
    'Medium'
    'Critical'
)
$json | ConvertTo-Json -Depth 99 | Set-Content path\to\newJson.Json

暫無
暫無

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

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