我已经导入了一些JSON数据并将其转换为PowerShell对象。我想了解如何检索所述数据的特定部分。
test.json:
{
"Table": {
"Users": {
"Columns": [ "[Id]",
"[FName]",
"[MName]",
"[SName]",
"[UName]",
"[Pasword]" ],
"data": "CustomUserData"
},
"Roles": {
"Columns": [ "[Id]",
"[Role]",
"[Description]" ],
"data": "CustomRoleData"
}
}
}
导入PS对象:
$userdata = Get-Content .\test.json |ConvertFrom-Json
检索和格式化列数据:
PS> $userdata = Get-Content ./test.json |ConvertFrom-Json
PS> $columns = $userdata.Table.Users.Columns -join ","
PS> $columns
[Id],[FName],[MName],[SName],[UName],[Pasword]
检索自定义数据的示例:
PS> $userdata.Table.Users.data
CustomUserData
我想做的是:
$userdata.table
来执行此操作时,我得到以下信息:PS> $userdata.Table |Format-List
Users : @{Columns=System.Object[]; data=CustomUserData}
Roles : @{Columns=System.Object[]; data=CustomRoleData}
我要查找的只是表名列表,在这种情况下-Users,Roles
谢谢!
答案 0 :(得分:0)
也许这可以帮助您。 递归输出属性名称是一个小功能。
function Get-Properties($obj, [int]$level = 0) {
$spacer = " "*$level
$obj.PSObject.Properties | ForEach-Object {
$spacer + $_.Name
if ($_.Value -is [PSCustomObject]){
Get-Properties $_.Value ($level + 2)
}
}
}
根据您的情况,您可以像这样使用它:
$userdata = Get-Content ./test.json | ConvertFrom-Json
Get-Properties $userData
控制台输出将如下所示:
Table Users Columns data Roles Columns data