PowerShell中访问嵌套自定义对象数组属性并处理years_activity数据的方法
PowerShell中访问嵌套自定义对象数组属性并处理years_activity数据的方法
我来帮你搞定这个PowerShell里处理嵌套对象属性的问题!首先咱们先理清楚你的数据结构:你把JSON转成对象后,$personData.persons是一个数组,里面第一个元素包含了johndoe和johndoe2这两个属性,而且每个属性本身又是一个数组,所以第一步得先精准定位到johndoe的具体对象。
第一步:获取目标对象
先把johndoe的对象取出来,方便后续操作:
$johnDoe = $personData.persons[0].johndoe[0]
需求一:保留活动条目数组,存入哈希表
如果想把年份和对应的原始数组条目存到哈希表里,直接遍历years_activity的属性就可以:
# 创建空哈希表 $johnDoeYears_Activity = @{} # 遍历years_activity的每个年份属性 foreach ($yearProp in $johnDoe.years_activity.PSObject.Properties) { # 把年份作为键,对应的数组作为值存入哈希表 $johnDoeYears_Activity[$yearProp.Name] = $yearProp.Value } # 查看结果 $johnDoeYears_Activity
执行后你会得到这样的哈希表:
Name Value ---- ----- 2021 {sample entry-1, sample entry-2} 2022 {sample entry-1, sample entry-2}
需求二:将活动条目合并为逗号分隔的字符串,存入哈希表并按指定格式输出
如果想把每个年份的活动条目合并成单个字符串,用-join命令就能轻松实现,然后按你想要的格式输出:
# 创建空哈希表 $johnDoeYears_Activity_String = @{} # 遍历年份属性,合并条目为字符串 foreach ($yearProp in $johnDoe.years_activity.PSObject.Properties) { # 用逗号加空格连接数组元素 $combinedEntries = $yearProp.Value -join ", " $johnDoeYears_Activity_String[$yearProp.Name] = $combinedEntries } # 按你需要的格式输出 foreach ($entry in $johnDoeYears_Activity_String.GetEnumerator()) { Write-Host "Name: $($entry.Name)" Write-Host "Value: $($entry.Value)`n" }
执行后会输出:
Name: 2021 Value: sample entry-1, sample entry-2 Name: 2022 Value: sample entry-1, sample entry-2
小提示
如果要处理johndoe2的数据,只需要把获取对象的代码改成$johnDoe2 = $personData.persons[0].johndoe2[0],后续逻辑完全一样哦!
备注:内容来源于stack exchange,提问作者Ichigo Kurosaki
相关产品推荐
相关产品推荐

