Я пытался добавить несколько 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": " "
]
}
]
}