Как изменить Json с помощью Powershell - PullRequest
1 голос
/ 04 мая 2020

У меня есть следующее JSON в файле "test. json":

{
  "metadata": [
    {
      "src": [
        {
          "files": [
            "src/**.csproj"
          ]
        }
      ],
      "dest": "api",
      "disableGitFeatures": false,
      "disableDefaultFilter": false
    }
  ]
}

Я хочу изменить элемент "sr c". Вместо:

  "src": [
    {
      "files": [
        "src/**.csproj"
      ]
    }
  ],

Это должно быть:

    "src": [
        {
          "files": [
            "*.csproj"
          ],
          "cwd":".."
        }
      ],

Где я изменяю первый элемент «files» и добавляю «cwd». Это должно быть прямо вперед, но я изо всех сил пытаюсь достичь этого в PowerShell. Кто-нибудь может указать мне правильное направление любых примеров этого?

Спасибо за любые указатели заранее.

1 Ответ

5 голосов
/ 04 мая 2020

Вы можете сделать следующее:

$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

Сложная задача - убедиться, что значение .files является массивом из одного элемента. Это можно сделать с помощью оператора подвыражения массива @() или унарного оператора ,.

...