PowerShell如何动态遍历嵌套JSON对象并提取指定字段?
遍历JSON对象并提取指定键值的PowerShell方法
当你通过$jsonMappings.config_service获取到的是PowerShell解析后的PSCustomObject时,直接用ForEach-Object遍历会把整个对象当作单个元素处理。要动态遍历其中的子对象并提取service键的值,可通过以下两种方法实现:
方法1:通过Get-Member获取属性后遍历
先获取父对象的所有属性(即config_service_1、config_service_2这类子对象的名称),再逐个提取对应子对象的service值:
$jsonMappings.config_service | Get-Member -MemberType NoteProperty | ForEach-Object { $jsonMappings.config_service.$($_.Name).service }
方法2:通过PSObject.Properties直接访问属性集合
这是更简洁的方式,直接获取父对象的属性集合,遍历每个属性的Value(即子对象)并提取service值:
$jsonMappings.config_service.PSObject.Properties | ForEach-Object { $_.Value.service }
扩展:同时获取配置名与对应服务值
如果需要同时拿到config_service_1这类配置名称和对应的服务值,可以输出自定义对象:
$jsonMappings.config_service.PSObject.Properties | ForEach-Object { [PSCustomObject]@{ ConfigName = $_.Name ServiceName = $_.Value.service } }
内容的提问来源于stack exchange,提问作者m341
相关产品推荐
相关产品推荐

