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

如何美化PowerShell/命令提示符响应为无冗余的标准JSON

解决PowerShell/CMD中JSON输出多余转义的问题

一、避免产生多余转义的正确命令

1. Get-ComputerInfo 正确转JSON

Get-ComputerInfo本身输出结构化对象,直接转JSON时需指定足够深度(默认深度为2,嵌套过深的对象会被截断为字符串,引发转义问题):

Get-ComputerInfo | ConvertTo-Json -Depth 10

指定-Depth参数可确保嵌套对象被完整序列化,不会生成不必要的转义字符。

2. systeminfo 转标准JSON

systeminfo是纯文本输出,不能直接通过管道传给ConvertTo-Json(否则PowerShell会把整个文本当作单个字符串转义)。需先将文本解析为结构化对象,再转JSON:

# 解析systeminfo文本为哈希表对象
$systemInfoObj = systeminfo | Select-Object -Skip 1 | ForEach-Object {
    if ($_ -match '^([^:]+):\s*(.*)$') {
        [PSCustomObject]@{
            Key = $matches[1].Trim()
            Value = $matches[2].Trim()
        }
    }
} | Group-Object -AsHashTable -AsString

# 生成标准JSON
$systemInfoObj | ConvertTo-Json -Depth 5

二、修复已有的带多余转义的JSON字符串

如果已经得到包含大量反斜杠的非标准JSON(本质是JSON字符串被二次转义),可通过“先解析为对象,再重新序列化”修复:

# 假设$badJson是你获取到的有问题的JSON字符串
$cleanObj = $badJson | ConvertFrom-Json
$standardJson = $cleanObj | ConvertTo-Json -Depth 10

ConvertFrom-Json会将带转义的字符串解析为原始对象,再用ConvertTo-Json重新生成标准JSON,自动去除多余的反斜杠和转义。

三、常见问题原因

  • 直接将纯文本(如systeminfo输出)传给ConvertTo-Json,导致整个文本被当作单个字符串转义。
  • 使用ConvertTo-Json时未指定足够的-Depth,嵌套对象被截断为字符串,引发后续转义。
  • 对已生成的JSON字符串再次执行转JSON操作,导致二次转义(比如将JSON输出又传给另一个ConvertTo-Json)。

内容的提问来源于stack exchange,提问作者Sufail A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:18:27