Как добавить новое свойство JsonArray в существующее свойство Json с помощью PowerShell - PullRequest
0 голосов
/ 26 марта 2020

У меня уже есть значение Json, полученное при вызове API, я хочу добавить новый список Json к выходящему свойству, поэтому

 #calling some API in a loop Start

        $apijson = Invoke-WebRequest -Uri $api -ErrorAction SilentlyContinue | ConvertFrom-Json
        $response = $apijson| ConvertTo-Json 

        $null = $data.Add($response);

 #calling some API in a loop End

Мой API Json будет выглядеть ниже

  {
            "host": "tet",
            "port": 443,
            "protocol": "http",
            "isPublic": false,
            "status": "READY",
            "startTime": 1585220081665,
            "testTime": 1585220127003,
            "engineVersion": "2.1.0",
            "criteriaVersion": "2009q",
            "endpoints": [
                {
                    "delegation": 1
                }
            ]
        }

Теперь у меня есть пользовательский новый JsonArray

[
    {
        "name":  "TLE",
        "Strength":  128
    },
    {
        "name":  "TLS",
        "trength":  415
    }
]

Я хочу добавить вышеуказанный JsonArray к моему исходному Json свойству, которое создает полный Json, как показано ниже

{
            "host": "tet",
            "port": 443,
            "protocol": "http",
            "isPublic": false,
            "status": "READY",
            "startTime": 1585220081665,
            "testTime": 1585220127003,
            "engineVersion": "2.1.0",
            "criteriaVersion": "2009q",
            "endpoints": [
                {
                    "delegation": 1
                }
            ]
        },
    "Strength": [
         {
            "name":  "TLE",
            "Strength":  128
          },
        {
           "name":  "TLS",
           "trength":  415
        }
       ]

Я пытался с Addmember, Concatination ничего не работает, к сожалению.

1 Ответ

1 голос
/ 26 марта 2020

Это для случая, когда вы добавляете Strength в качестве свойства к существующему отдельному объекту (преобразуется из JSON). При использовании Add-Member вы должны заставить свой новый объект быть одним объектом массива.

$apijson = Invoke-WebRequest -Uri $api -ErrorAction SilentlyContinue | ConvertFrom-Json
$newjson = @'
[
    {
        "name":  "TLE",
        "Strength":  128
    },
    {
        "name":  "TLS",
        "trength":  415
    }
]
'@ | ConvertFrom-Json
$apijson | Add-Member -Type NoteProperty -Name 'Strength' -Value @($newjson)
$apijson | ConvertTo-Json -Depth 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...