You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法获取ConvertFrom-Json创建对象的键:缺失GetEnumerator()与keys

解决ConvertFrom-Json生成对象缺少GetEnumerator()和keys属性的问题

你遇到的问题很典型:ConvertFrom-Json返回的是PSCustomObject类型的对象,而不是像你定义的$myobj那样的哈希表(IDictionary类型),所以它没有原生的GetEnumerator()方法和keys属性,导致你没法像操作哈希表那样去遍历键值对。

先看一下问题的重现代码(和你提供的一致):

$string = '{ "OBJECT": "SOP10107", "OBJECTKEY": "2|OSTD-9999 " }'
$obj = $string | ConvertFrom-Json
$obj # 这里其实会输出对象内容,只是没法用哈希表的方法操作
$obj | % getEnumerator | % { $_.key $_.value } # 报错或无结果,因为方法不存在
$obj.keys # 返回$null,因为属性不存在

# 对比哈希表的正常表现
$myobj = @{ "key1" = "val1"; "key2" = "val2" }
$myobj # 正常输出键值对
$myobj | % getEnumerator | % { $_.key $_.value } # 正常遍历
$myobj.keys # 正常返回键列表

下面给你两种解决办法:

方法1:将PSCustomObject转换为哈希表

写一个简单的转换函数,把PSCustomObject转成哈希表,这样就能用你熟悉的哈希表方法了:

function ConvertTo-Hashtable {
    param(
        [Parameter(ValueFromPipeline)]
        [PSCustomObject]$InputObject
    )
    process {
        $hashtable = @{}
        # 遍历PSCustomObject的所有属性
        $InputObject.PSObject.Properties | ForEach-Object {
            $hashtable[$_.Name] = $_.Value
        }
        return $hashtable
    }
}

使用示例:

$string = '{ "OBJECT": "SOP10107", "OBJECTKEY": "2|OSTD-9999 " }'
$obj = $string | ConvertFrom-Json
$hashtableObj = $obj | ConvertTo-Hashtable

# 现在就能正常操作了
$hashtableObj.keys # 返回OBJECT、OBJECTKEY
$hashtableObj | ForEach-Object GetEnumerator | ForEach-Object {
    Write-Host "键: $($_.Key),值: $($_.Value)"
}

方法2:直接遍历PSCustomObject的PSObject.Properties

如果不想转换类型,也可以直接通过PSCustomObject自带的PSObject.Properties属性来遍历所有键值对,这是PowerShell自定义对象的标准属性:

$string = '{ "OBJECT": "SOP10107", "OBJECTKEY": "2|OSTD-9999 " }'
$obj = $string | ConvertFrom-Json

# 直接遍历属性
$obj.PSObject.Properties | ForEach-Object {
    Write-Host "键: $($_.Name),值: $($_.Value)"
}

简单总结一下:PSCustomObject是PowerShell的自定义对象,它的属性存储在PSObject.Properties里,而哈希表是字典类型,自带集合操作方法。根据你的需求选择上面的方法就可以解决问题啦。

内容的提问来源于stack exchange,提问作者Chris76786777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:38:40