Как прочитать json файл из powershell и извлечь список из массива - PullRequest
0 голосов
/ 29 апреля 2020

Требуется имя в массиве, если флаг изменения имеет значение true, например list = [kernel, activemq] Как извлечь из PowerShell

[
    {
        "name"           : "kernel",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\kernel.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "activemq",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\activemq.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "ignite-server",
        "change_flag"    : "FALSE",
        "localpath"      : "setupfiles\\controlroom\\ignite-server.jar",
        "unpack"         : "FALSE",
        "filename"       : []
    }
]

1 Ответ

1 голос
/ 29 апреля 2020

Используйте ConvertFrom-Json cmdet для преобразования вашего текста в json, затем вы можете отфильтровать с помощью Where-Object cmdlet:

$json = 
@'
[
    {
        "name"           : "kernel",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\kernel.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "activemq",
        "change_flag"    : "TRUE",
        "localpath"      : "setupfiles\\controlroom\\activemq.jar",
        "unpack"         : "FALSE",
        "filename"       : ["",""]
    },
    {
        "name"           : "ignite-server",
        "change_flag"    : "FALSE",
        "localpath"      : "setupfiles\\controlroom\\ignite-server.jar",
        "unpack"         : "FALSE",
        "filename"       : []
    }
]
'@

($json | ConvertFrom-Json) | Where-Object change_flag -eq 'TRUE' | Select-Object -ExpandProperty name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...