PowerShell解析JSON文件提取domains节点下所有域名属性名的方法
PowerShell 提取JSON中domains节点所有域名的实现方案
你可以直接使用以下代码完成需求,兼容PowerShell 5.1及以上所有版本:
完整实现代码(从本地JSON文件读取)
# 替换为你的JSON文件实际路径 $jsonPath = "C:\你的文件路径\domains.json" # 读取并解析JSON $jsonObj = Get-Content -Path $jsonPath -Raw | ConvertFrom-Json # 提取domains下所有属性名(域名) $domainNames = $jsonObj.domains.PSObject.Properties.Name # 输出顿号分隔的目标格式结果 $domainNames -join "、"
代码说明
Get-Content -Raw:将JSON文件内容作为完整字符串读取,避免逐行读取导致解析异常ConvertFrom-Json:将JSON字符串转换为PowerShell可直接操作的自定义对象PSObject.Properties.Name:直接提取指定对象下所有自定义属性的名称,也就是你需要的域名列表-join "、":将域名数组按顿号拼接为你需要的字符串格式
直接运行验证(内置测试JSON)
如果需要快速测试效果,可以直接运行以下包含测试JSON的代码:
$testJson = @' { "domains": { "1.com": { "data_path": "c:\\zzzzz\\Domains\\1.com" }, "22.com": { "data_path": "c:\\zzzzz\\Domains\\22.com" }, "333.com": { "data_path": "c:\\zzzzz\\Domains\\333.com" }, "4444.com": { "data_path": "c:\\zzzzz\\Domains\\4444.com" } }, "domain_aliases": {} } '@ $jsonObj = $testJson | ConvertFrom-Json $jsonObj.domains.PSObject.Properties.Name -join "、"
运行后直接输出结果:1.com、22.com、333.com、4444.com
内容的提问来源于stack exchange,提问作者VPDD
相关产品推荐
相关产品推荐

