【问题标题】:PowerShell to prettify multiple JSON files in one folderPowerShell 美化一个文件夹中的多个 JSON 文件
【发布时间】:2020-08-11 21:41:59
【问题描述】:

我的目标是美化一个文件夹中的所有 JSON 文件(大约 70K)。 假设我有一个名为“juicero”的文件夹,其中有大约 70K 不同名称的 .JSON 文件 - a.json, b.json

这是我尝试过的 -

PS> $files = Get-ChildItem C:\users\gamer\desktop\juicero\*.json
PS> $json_test = (Get-Content $files -raw | ConvertFrom-Json)
PS> foreach ($file in $files) { ConvertTo-Json | Set-Content $files }

我认为它会遍历路径并美化这些(非常简单的逻辑),但由于某种原因,这是删除文件的内容。如果我不迭代并且只在一个 .json 文件上使用这个函数,它就可以工作 - 所以我猜迭代逻辑有问题?

【问题讨论】:

    标签: json windows powershell shell loops


    【解决方案1】:

    您需要处理循环内的文件,如下所示:

    foreach ($file in $files) {
      $content = Get-Content $file -Raw | ConvertFrom-Json
      $newFilePath = $file.FullName.Replace("OldFolder","NewFolder")
      ConvertTo-Json -InputObject $content| Set-Content $newFilePath
    }
    

    请注意,我将输出文件放入新文件夹中,以便在出现任何问题时进行调试。


    您的代码还有一个问题。在这里您可以一次转换所有文件:

    $json_test = (Get-Content $files -raw | ConvertFrom-Json)
    

    但是,稍后,PowerShell 没有关于源文件名的信息(文件名不包含在$json_test 中)。

    【讨论】:

    • 这很有意义 - 我刚刚运行它,但遇到了问题 - 我正在尝试将 Depth 添加到文件中,但它不起作用
    • 在哪里可以将 -depth 添加到转换中?
    • 检查您正在使用的 cmdlet 的文档并搜索 -Depth。例如ConvertTo-Json
    猜你喜欢
    • 2021-06-01
    • 2020-06-11
    • 1970-01-01
    • 2014-04-17
    • 2022-01-21
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多