gpt4 book ai didi

arrays - Powershell-将字符串拆分为由开始和结束字符串描述的数组

转载 作者:行者123 更新时间:2023-12-03 00:56:26 24 4
gpt4 key购买 nike

我有一个多行字符串(来自json),例如

"somekey": "somevalue",
"somekey": "somevalue"
"somekey": [somevalue]
"somekey": somenumber
"somekey": null,
我想将字符串拆分成一个数组,其中每个元素的值是somevalue或somenumber的值。 (我实际上是在形成一个数组,其中包含json中出现的每个值的值)
这将产生以下元素值:
somevalue
somevalue
somevalue
somenumber
我玩过以下代码的变体和补充:
$jsonValues = $jsonValues.Split(": ").Split([Environment]::NewLine)
但想知道实现这一目标的最 Eloquent 方法。

最佳答案

这是一个函数,通常通过 ConvertFrom-Json 使用正确的JSON解析,从JSON文档中提取所有叶子属性值:

# Accepts a JSON string and outputs all leaf property values.
function Get-JsonValue {
param([Parameter(ValueFromPipeline)] $json)

begin {
# Helper function that walks the object graph.
function walk {
param($obj)

# Note: @(...) is used so that scalar $null values aren't ignored.
foreach ($elem in @($obj)) {
if ($elem -isnot [System.Management.Automation.PSCustomObject]) {
$elem # leaf value -> output
}
else {
# recurse
foreach ($prop in $elem.psobject.Properties) {
foreach ($subElem in @($prop.Value)) { walk $subElem }
}
}
}
}
}

process {
walk ($json | ConvertFrom-Json)
}

}

# Sample JSON input
$json = @'
[ { "hi": 11 }, {
"somekey1": "somevalue1",
"somekey2": "somevalue2",
"somekey3": 42,
"somekey4": [
"somevalue4.1",
"somevalue4.2",
4.42
],
"somekey5": null
} ]
'@


# Call with the sample string
$json | Get-JsonValue
以上结果如下:
11
somevalue1
somevalue2
42
somevalue4.1
somevalue4.2
4.42
# $null - not visible

关于arrays - Powershell-将字符串拆分为由开始和结束字符串描述的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62680096/

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