【问题标题】:Minify JSON with PowerShell?使用 PowerShell 缩小 JSON?
【发布时间】:2017-06-24 06:01:22
【问题描述】:

有没有办法缩小(在这种情况下删除所有空格)JSON文件来转这个

[
    0.000005,
    0,
    0
],
[
    219.740502,
    0.003449,
    4.177065
],
[
    45.210918,
    0.003365,
    -16.008996
],
[
    344.552785,
    0.030213,
    277.614965
],

使用 PowerShell 进行此操作

[0.000005,0,0],[219.740502,0.003449,4.177065],[45.210918,0.003365,-16.008996],[344.552785,0.030213,277.614965],

我已经尝试了几个在线“缩小器”,但是该文件包含超过 100,000 个数组,并且基本上破坏了所有在线缩小器。有什么想法吗?

【问题讨论】:

    标签: json powershell minify


    【解决方案1】:

    当您操作 PowerShell 对象并将它们转换为 JSON (ConvertTo-Json) 时,您已经获得了 -compress 参数,仅供参考:

    New-Object -TypeName PSCustomObject -Property @{Name="Hugot";GivenName="Victor"} | ConvertTo-Json -Compress
    

    给:

    {"GivenName":"Victor","Name":"Hugot"}
    

    【讨论】:

    • 更好的答案
    【解决方案2】:

    添加到 JP 的回答中,

    (ConvertFrom-Json $json) | ConvertTo-Json -Compress
    

    如果您已经有 json,这很有用。如果你不做前面的ConvertFrom-Json,那么它将用\r\n 编码换行符,用\" 编码引号。

    【讨论】:

      【解决方案3】:

      您可以使用基本的正则表达式轻松做到这一点。如果您在文件中有此内容,请尝试以下操作。您必须包含 -Raw 参数,否则文件将一次传递一行,这将阻止正则表达式删除换行符。

      (Get-Content C:\Some\File.json -Raw) -replace '\s','' | out-file C:\some\outfile.json
      

      【讨论】:

      • 这里有大警告!此命令将以 UTF-16 格式输出结果。除非您尝试计算内容的哈希值,否则这并不是真正的问题。只需确保生成的编码是您所期望的。即使使用 -encoding 开关,输出也会为您提供带有 BOM 的 UTF8。这会弄乱你对文件的哈希计算。
      • 这不会从字符串中删除空格,正确的缩小不应该这样做吗?
      猜你喜欢
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多