如何用PowerShell原生ConvertFrom-Json实现jq式递归缩进JSON格式?
如何用PowerShell原生命令实现类似jq的缩进格式化JSON
可以通过PowerShell的ConvertFrom-Json搭配ConvertTo-Json命令实现,具体步骤如下:
实现命令
echo '{"class": [{"name": "oren", "age": 6},{"name": "moish", "age": 200}]}' | ConvertFrom-Json | ConvertTo-Json -Depth 10
输出效果
{ "class": [ { "name": "oren", "age": 6 }, { "name": "moish", "age": 200 } ] }
关键说明
ConvertFrom-Json仅负责将JSON字符串解析为PowerShell对象,本身不会输出格式化的JSON文本;ConvertTo-Json才是将对象重新序列化为带缩进的JSON字符串的核心命令。-Depth参数用于控制递归序列化的层级,默认值为2,若你的JSON嵌套结构更深,需要手动调整这个数值,避免输出被截断。- 处理本地JSON文件时,可使用如下命令:
Get-Content .\source.json | ConvertFrom-Json | ConvertTo-Json -Depth 10 | Set-Content .\formatted.json
提问内容:
我已经通过choco install jq在Windows系统上成功使用jq.exe,执行如下命令可输出带递归缩进的JSON格式:echo '{"class": [{"name": "oren", "age": 6},{"name": "moish", "age": 200}]}' | jq.exe输出结果:
{ "class": [ { "name": "oren", "age": 6 }, { "name": "moish", "age": 200 } ] }但使用PowerShell原生的
ConvertFrom-Json时,输出格式如下,对实际JSON文件毫无用处:echo '{"class": [{"name": "oren", "age": 6},{"name": "moish", "age": 200}]}' | ConvertFrom-Json输出结果:
class ----- {@{name=oren; age=6}, @{name=moish; age=200}} # <--- 对实际JSON文件毫无用处我在官方文档中未找到相关方法,请问能否用
ConvertFrom-Json实现与jq相同的递归缩进格式?
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

