Powershell вложил json в повторяющийся CSV - PullRequest
1 голос
/ 31 мая 2019

Вид, похожий на Преобразование вложенного массива JSON в отдельные столбцы в CSV-файле , но вместо выровненного CSV-файла (т.е. дисциплина_01, discicpline_01), экспортируемого в несколько строк CSV-файла:

{
"data": [{
    "attributes": {
        "id": 10011,
        "title": "Test procedure",
        "slug": "slug",
        "url": "http://test.test",
        "disciplines": [
            "discipline_a",
            "discipline_b",
            "discipline_c"
        ]
    }
}]
}

экспорт в

"id","title","slug","url","discipline"
"10011","Test procedure","slug","http://test.test","discipline_a"
"10011","Test procedure","slug","http://test.test","discipline_b"
"10011","Test procedure","slug","http://test.test","discipline_c"

Благодаря Экспорт полей с вложенными значениями из JSON в CSV Я получил это далеко:

$foo = invoke-restmethod $restquery -headers $headers
$foo | 
select -ExpandProperty data | 
select -ExpandProperty attributes |
select id, title, slug, url, disciplines | 
   foreach { 
        $_.disciplines = $_disciplines -join ' ' 
        $_ | 
export-csv c:\outfile.csv -notypeinformation

Это дает мне

"10011","Test procedure","slug","http://test.test","discipline_a discipline_b discipline_c"

Но не знаю, как его получить:

"id","title","slug","url","discipline"
"10011","Test procedure","slug","http://test.test","discipline_a"
"10011","Test procedure","slug","http://test.test","discipline_b"
"10011","Test procedure","slug","http://test.test","discipline_c"

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 01 июня 2019

Пока ваш опубликованный Json недействителен,
это может сделать:

## Q:\Test\2019\05\31\SO_56401395.ps1
$foo = invoke-restmethod $restquery -headers $headers

$Data = $foo.data.attributes | ForEach-Object {
    foreach ($discipline in $_.disciplines}(
        [PSCustomObject]@{
            id         = $_.id
            title      = $_.title
            slug       = $_.slug
            url        = $_.url
            discipline = $discipline
        }
    }
}
$Data | Export-Csv c:\outfile.csv -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...