如何用PowerShell修复含尾逗号的JSON格式文件
PowerShell处理带尾逗号的JSON格式化问题
PowerShell完全可以实现类似Notepad++的效果,自动移除JSON中的多余尾逗号并输出标准格式化的JSON,具体操作如下:
核心解决方案(PowerShell 7+推荐)
PowerShell 7及以上版本的ConvertFrom-Json原生支持解析带有尾逗号的非标准JSON,只需将JSON解析为对象后再重新序列化,就能自动生成符合规范的JSON:
# 读取目标JSON文件 $rawJson = Get-Content -Path "你的JSON文件路径.json" -Raw # 解析为PowerShell对象 $jsonObj = $rawJson | ConvertFrom-Json # 重新序列化为标准格式化JSON并保存 $jsonObj | ConvertTo-Json -Depth 10 | Set-Content -Path "格式化后的文件路径.json"
-Raw参数确保文件内容被作为完整字符串读取,避免换行导致的解析问题-Depth参数用于指定JSON的最大嵌套深度,默认值为2,设置更大的值(比如10)可以避免嵌套结构被截断- 重新序列化时,
ConvertTo-Json会自动移除所有多余的尾逗号,生成标准格式的JSON
兼容PowerShell 5.1的方案
如果使用PowerShell 5.1,原生ConvertFrom-Json无法解析带尾逗号的JSON,可以先用正则表达式预处理移除多余逗号,再进行解析:
$rawJson = Get-Content -Path "你的JSON文件路径.json" -Raw # 正则移除对象/数组末尾的逗号,以及键值对后的空逗号 $cleanedJson = $rawJson -replace '(?<=[\}\]])\s*,', '' -replace ':\s*,', ':' $jsonObj = $cleanedJson | ConvertFrom-Json $jsonObj | ConvertTo-Json -Depth 10 | Set-Content -Path "格式化后的文件路径.json"
效果验证
针对你提供的问题JSON:
{ "Name": "SampleName", "Cart": [ { "Item1": "ItemOne", }, { "Item2": "ItemTwo", }, ] }
经过上述处理后,会生成你期望的标准JSON:
{ "Name": "SampleName", "Cart": [ { "Item1": "ItemOne" }, { "Item2": "ItemTwo" } ] }
内容的提问来源于stack exchange,提问作者Mcore8x
相关产品推荐
相关产品推荐

