如何使用Powershell修改Json

Rob*_*abe 1 powershell json file-get-contents

我将以下 JSON 保存在文件“test.json”中:

{
  "metadata": [
    {
      "src": [
        {
          "files": [
            "src/**.csproj"
          ]
        }
      ],
      "dest": "api",
      "disableGitFeatures": false,
      "disableDefaultFilter": false
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想修改“src”元素。代替:

  "src": [
    {
      "files": [
        "src/**.csproj"
      ]
    }
  ],
Run Code Online (Sandbox Code Playgroud)

它必须是:

    "src": [
        {
          "files": [
            "*.csproj"
          ],
          "cwd":".."
        }
      ],
Run Code Online (Sandbox Code Playgroud)

我修改“文件”的第一个元素并添加“cwd”。这应该是直截了当的,但我正在努力在 powershell 中实现这一目标。任何人都可以指出我正确的方向吗?

感谢您提前提供任何指示。

Adm*_*ngs 5

您可以执行以下操作:

$JSONObject = Get-Content test.json -Raw | ConvertFrom-Json
$JSONObject.metadata.src.files = ,'*.csproj'
$JSONObject.metadata.src | Add-Member -Name 'cwd' -Value '..' -MemberType NoteProperty
$JSONObject | ConvertTo-Json -Depth 5 | Set-Content test.json
Run Code Online (Sandbox Code Playgroud)

棘手的部分是确保该.files值是单个元素的数组。您可以使用数组子表达式运算符@()或一元运算符执行此操作,