Powershell Can';t从Json获取从ConvertFrom创建的对象的键

Powershell Can';t从Json获取从ConvertFrom创建的对象的键,powershell,Powershell,当从convertfromjson创建对象时,它不会创建“普通”对象,并且缺少GetEnumerator()和键 下面是一些演示代码: $string = '{ "OBJECT": "SOP10107", "OBJECTKEY": "2|OSTD-9999 " }' $obj = $string | ConvertFrom-Json $obj # no results returned $obj | % getEnumerator | % { $_.key

当从
convertfromjson
创建对象时,它不会创建“普通”对象,并且缺少
GetEnumerator()

下面是一些演示代码:

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

$obj = $string | ConvertFrom-Json

$obj

# no results returned
$obj  | % getEnumerator | % {
  $_.key
  $_.value
}

# no results returned
$obj.keys

$myobj = @{
  "key1" = "val1"
  "key2" = "val2"
}

$myobj

# returns expected result
$myobj | % getEnumerator | % {
  $_.key
  $_.value
}

# returns expected result
$myobj.keys

convertfromjson
创建类型为
PSCustomObject
的普通对象,就像
Select object
++

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

$obj = $string | ConvertFrom-Json

#Examine object type and properties
$obj | Get-Member
TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
OBJECT      NoteProperty string OBJECT=SOP10107
OBJECTKEY   NoteProperty string OBJECTKEY=2|OSTD-9999

#Access known properties directly
$obj.OBJECT
SOP10107

$obj.OBJECTKEY
2|OSTD-9999
如果要循环属性(例如,因为不知道名称),请使用
$obj.psobject.properties
,它返回所有属性的数组

#List Name and Value for each property. You can replace Select-Object with `Foreach-Object` to loop through them    
$obj.psobject.properties | Select-Object Name, Value

Name      Value
----      -----
OBJECT    SOP10107
OBJECTKEY 2|OSTD-9999

convertfromjson
创建类型为
PSCustomObject
的普通对象,就像
Select object
++

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

$obj = $string | ConvertFrom-Json

#Examine object type and properties
$obj | Get-Member
TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
OBJECT      NoteProperty string OBJECT=SOP10107
OBJECTKEY   NoteProperty string OBJECTKEY=2|OSTD-9999

#Access known properties directly
$obj.OBJECT
SOP10107

$obj.OBJECTKEY
2|OSTD-9999
如果要循环属性(例如,因为不知道名称),请使用
$obj.psobject.properties
,它返回所有属性的数组

#List Name and Value for each property. You can replace Select-Object with `Foreach-Object` to loop through them    
$obj.psobject.properties | Select-Object Name, Value

Name      Value
----      -----
OBJECT    SOP10107
OBJECTKEY 2|OSTD-9999

$obj.OBJECT
$obj.OBJECTKEY
?我想这就是你要找的。哎呀。我错过了“这个”的链接。我来试试。
$obj.OBJECT
$obj.OBJECTKEY
?我想这就是你要找的。哎呀。我错过了“这个”的链接。我来试试。这很有效,维韦克提供的链接也是如此。我喜欢你的解释,解决方案也更容易理解。这很有效,Vivek提供的链接也是如此。我喜欢你的解释,解决方案也更容易理解。