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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:54:36