有点奇怪的问题。我有一个需要处理的大型 JSON 文件。基于另一个问题,我需要流式传输文件,因为否则它会因为内存而给我带来问题:JSON Powershell memory issue
我所拥有的是:
get-content -Path largefile.json | ForEach-Object {
$row = $_ = $_.TrimStart('[').TrimEnd(']')
if ($_) { $_ | Out-String | ConvertFrom-Json }
New-Item -Path $($Row.Id).txt
Set-Content -Path $($Row.Id).txt -Value ($row.Body)
}
我可以轻松地使用 $row 来发布 Largefile.json 中最后处理的行。我想在当前处理的行中创建一个名称为 Id 的文件,并将正文列添加到文件中。但是,当我想使用 $row.Id 显示特定列时,不幸的是这显示为空。
Largefile.json 的结构如下:
[{"Id":"1","ParentId":"parent","Name":"filename","OwnerId":"owner","CreatedDate":"date","Body":"data1"}
{"Id":"2","ParentId":"parent","Name":"filename","OwnerId":"owner","CreatedDate":"date","Body":"data2"}
{"Id":"3","ParentId":"parent","Name":"filename","OwnerId":"owner","CreatedDate":"date","Body":"data3"}
{"Id":"4","ParentId":"parent","Name":"filename","OwnerId":"owner","CreatedDate":"date","Body":"data4"}
{"Id":"5","ParentId":"parent","Name":"filename","OwnerId":"owner","CreatedDate":"date","Body":"data5"}
]
最终结果应该是我有 5 个文件:
1.txt - 文件内的值应该是:data1
2.txt - 文件内的值应该是:data2
3.txt - 文件内的值应该是:data3
4.txt - 文件内的值应该是:data4
5.txt - 文件内的值应该是:data5
我使用 Powershell 7.1.3
有什么方法可以像普通的 ForEach 一样使用 $row.Id 和 $row.ParentId 吗?
谢谢你的帮助。