gpt4 book ai didi

arrays - Powershell - json 文件 - 仅选择第一个值

转载 作者:行者123 更新时间:2023-12-05 05:43:52 26 4
gpt4 key购买 nike

我有这个 json 文件:

[
{
"group": [313, 312, 313, 311],
"group_name": ["example", "example", "example1"],
"status": ["not_available_time", "no_time"]
}
]

在 Powershell 中,我希望输出为:313,示例,not_available_time

所以我总是只需要第一个值。

我已经试过了:

$responseJson = ConvertFrom-Json $response.Content

$group = $responseJson.group[0]
$name = $responseJson.group_name[0]
$status = $responseJson.status[0]

行得通。但前提是总是有不止一个值。例如:如果 JSON 文件中的 "group_name" 只包含值 "example"(而不是 ["example", "example", "example1 "]) => 输出只会是 "e" 而不是 "example"。它不采用第一个值,如果只有一个值,则只采用第一个字母

如何选择第一个值?

BR,谢谢!

最佳答案

有 2 种安全方法可确保您始终选择第一个,无论是数组标量 还是:

@([System.Management.Automation.Internal.AutomationNull]::Value).GetType().Name # => Object[]
@($null).GetType().Name # => Object[]
  • 或者,Select-Object使用 -First 1 参数,区别在于返回对象的类型保持不变:
(1 | Select-Object -First 1).GetType().Name        # => Int32
('a', 'b' | Select-Object -First 1).GetType().Name # => String
$null -eq ($null, $null | Select-Object -First 1) # => True

两种选择都有效,取决于您的用例,哪一种更适合您的需求:

$json = @'
[
{
"group": [313, 312, 313, 311],
"group_name": "single_element",
"status": null
}
]
'@ | ConvertFrom-Json

$json.PSObject.Properties | ForEach-Object {
$arr = @($_.Value)[0]
$slo = $_.Value | Select-Object -First 1

[pscustomobject]@{
'ArraySubExpression' = "[ {0}: $arr ]" -f $_.Name
'Select-Object' = "[ {0}: $slo ]" -f $_.Name
}
}


ArraySubExpression Select-Object
------------------ -------------
[ group: 313 ] [ group: 313 ]
[ group_name: single_element ] [ group_name: single_element ]
[ status: ] [ status: ]

关于arrays - Powershell - json 文件 - 仅选择第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71730295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com