如何从powershell读取json文件并提取数组列表
如果更改标志为true,则需要数组中的名称,例如list=[kernel,activemq] 如何通过PowerShell提取数据如何从powershell读取json文件并提取数组列表,json,powershell,Json,Powershell,如果更改标志为true,则需要数组中的名称,例如list=[kernel,activemq] 如何通过PowerShell提取数据 [ { "name" : "kernel", "change_flag" : "TRUE", "localpath" : "setupfiles\\controlroom\\kernel.jar", "unpack" : "FALSE",
[
{
"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" : []
}
]
使用
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
只有当change_flag=true时,我才需要创建列表并添加每个名称的值,我才采用我的答案。请试一试