Несколько json объектов на один json объект в PowerShell, получая дополнительные кавычки - PullRequest
0 голосов
/ 26 марта 2020

Я пытался добавить несколько Json объектов в один JSON массив с помощью Powershell

Из этого ответа Я получил решение

$users = [System.Collections.ArrayList]::new();

 #calling some API in a loop Start

            $response = $json | ConvertTo-Json 
            $null = $data.Add($response);

 #calling some API in a loop End

    $result = @{ Data = $data};


    $result | ConvertTo-Json  | % { [System.Text.RegularExpressions.Regex]::Unescape($_) } | Out-File 'C:\Jay\inv\$filename.json'

Например, скажем, ответ JSON от API выглядит как

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

Затем, согласно сценарию, мой последний файл, который я ожидал, выглядит как

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

Но я получаю дополнительные кавычки, подобные приведенным ниже, которые приводят к ошибке в json

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

Может кто-нибудь помочь выяснить, что не так с скриптом powershell?

Обновление 1

$result = @{ Data = $data | ConvertFrom-Json };

Я получаю json как

{
    "Data" : [
        {
            "host": "tet",
            "port": 443,
            "protocol": "http",
            "isPublic": false,
            "status": "READY",
            "startTime": 1585220081665,
            "testTime": 1585220127003,
            "engineVersion": "2.1.0",
            "criteriaVersion": "2009q",
            "endpoints": "     "
            ]
        },
        {
            "host": "tet",
            "port": 443,
            "protocol": "http",
            "isPublic": false,
            "status": "READY",
            "startTime": 1585220081665,
            "testTime": 1585220127003,
            "engineVersion": "2.1.0",
            "criteriaVersion": "2009q",
            "endpoints": "     "
            ]
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...