You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:16:24