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

如何使用PowerShell从含1000个JSON对象的文本文件中按指定DUNS号检索单个对象

使用PowerShell按DUNS号检索JSON文件中的特定对象

没问题,我来帮你搞定这个需求!下面是两种常见场景下的PowerShell解决方案,适配你说的包含1000个JSON对象的文件:

场景1:文件为JSON Lines格式(每行一个独立JSON对象)

这是大数量JSON对象常用的存储方式,逐行处理能避免一次性加载整个文件到内存,效率更高:

# 定义你要查找的目标DUNS号
$targetDuns = "024330410"

# 逐行读取文件、解析JSON并匹配DUNS号
Get-Content -Path "C:\你的文件路径\data.json" | ForEach-Object {
    try {
        # 解析当前行的JSON对象
        $jsonObj = $_ | ConvertFrom-Json
        # 匹配organization下的duns字段
        if ($jsonObj.organization.duns -eq $targetDuns) {
            # 将匹配到的对象转回JSON字符串输出(可根据需求保存到文件)
            $jsonObj | ConvertTo-Json -Depth 10
            # 找到目标后立即退出循环,节省不必要的处理
            break
        }
    }
    catch {
        Write-Warning "解析某行JSON时出错: $_"
    }
}

场景2:文件为完整的JSON数组(所有对象包裹在[]中)

如果你的文件是标准的JSON数组格式,直接加载整个数组再过滤更简单:

$targetDuns = "024330410"

# 一次性读取整个文件并解析为JSON数组
$jsonArray = Get-Content -Path "C:\你的文件路径\data.json" -Raw | ConvertFrom-Json
# 过滤出匹配DUNS号的对象
$matchingObject = $jsonArray | Where-Object { $_.organization.duns -eq $targetDuns }

# 输出结果
if ($matchingObject) {
    $matchingObject | ConvertTo-Json -Depth 10
} else {
    Write-Host "未找到DUNS号为 $targetDuns 的组织对象"
}

实用小贴士

  • 深度设置:ConvertTo-Json默认的嵌套深度是2,你的JSON有多层嵌套(比如organization下还有dunsControlStatus),所以要显式设置-Depth参数(比如10)避免截断内容
  • 格式匹配:确保DUNS号以字符串形式匹配,不要转成数字(比如示例中的024330410有前导零,转数字会丢失)
  • 多匹配处理:如果文件中有多个相同DUNS号的对象,去掉代码中的break即可输出所有匹配结果

内容的提问来源于stack exchange,提问作者user3278314

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:04:06