gpt4 book ai didi

arrays - 带有数组的 Powershell ConvertFrom-Json 向数组值添加额外的空格

转载 作者:行者123 更新时间:2023-12-02 07:23:05 25 4
gpt4 key购买 nike

当使用 ConvertFrom-Json 编写 powershell 脚本时,数组中的值在将其转换为字符串时似乎会使用附加空格进行转换。以下代码在一个小代码示例中展示了这一点:

$object = @"
{
"object":
{
"prop1": "value",
"array":[
{ "key": "value"},
{ "key2": "valuevalue"},
{ "key3": "valuevalue"},
{ "key4": "valuevalue"},
{ "key5": "valuevalue"}
]
}
}
"@ | ConvertFrom-Json

$object.object.prop1
$object.object.array.key

$t = $object.object.prop1
$t2= $object.object.array.key
"""$t"""
"""$t2"""

输出:

value
value
"value"
"value "

最后一个值中的额外空格来自哪里?当向数组添加更多值对时,会添加更多空格。

最佳答案

这不是关于ConvertFrom-Json ,大约是$array.value 。从 v3 或 v4 开始,PowerShell 允许使用点表示法获取数组项的指定属性。如果缺少某个属性,则结果为 null,除非启用了严格模式。在后一种情况下,它会失败。

示例如下:

$array = @(
[PSCustomObject]@{key = 'value'}
[PSCustomObject]@{key2 = 'valuevalue'}
)

$result = $array.key
$result.GetType().Name
"[$result]"

输出(注意结果类型和额外的空格)

Object[]
[value ]

所以结果是一个数组。当您将数组转换为字符串时,它的项目是使用空格作为默认分隔符连接(可以通过 $OFS 更改)。

如果您在 PowerShell v2 中运行上面的示例,则会得到 []因为 v2 没有支持使用点表示法获取数组项属性。

如果您使用 Set-StrictMode -Version 2 运行示例然后它失败并出现错误在此对象上找不到属性“key”。它在所有 PowerShell 版本中都会失败。在 v2 中,因为数组没有属性 key 。在更高版本中,因为第二个数组项没有此属性。

关于arrays - 带有数组的 Powershell ConvertFrom-Json 向数组值添加额外的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36015316/

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