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

求助:在PowerShell中将无效JSON转换为有效JSON的方法

PowerShell追加JSON生成无效格式的修复

问题现象

使用PowerShell变量动态追加写入JSON文件时,生成了无效JSON——文件内容是两个独立的JSON对象拼接,而非单个包含多个键的有效JSON对象:

生成的无效JSON

{
    "B21E7":  [
                {
                    "car":  35761,
                    "tire":  1
                },
                {
                    "car":  36532,
                    "tire":  1
                }
            ]
}
{
    "B21E7":  [
                {
                    "car":  35761,
                    "tire":  1
                },
                {
                    "car":  36532,
                    "tire":  1
                }
            ]
}

期望的有效JSON格式

{
    "B21E7":  [
                {
                    "car":  35761,
                    "tire":  1
                },
                {
                    "car":  36532,
                    "tire":  1
                }
            ],
    "B21E7":  [
                {
                    "car":  35761,
                    "tire":  1
                },
                {
                    "car":  36532,
                    "tire":  1
                }
            ]
}

当前使用的代码

$track = @(@{$code.keyFull = $values })
Write-Output $track | ConvertTo-Json -depth 100 | Out-File -FilePath track.json -Append

解决方案

直接追加ConvertTo-Json的输出会导致多个独立JSON对象拼接,违反JSON规范。正确的做法是先读取现有JSON数据、合并新内容,再整体写入:

# 构造新的键值对数据
$newData = @{ $code.keyFull = $values }

# 读取现有JSON文件,若无则初始化空哈希表
$existingData = if (Test-Path track.json) {
    Get-Content track.json -Raw | ConvertFrom-Json -AsHashtable
} else {
    @{}
}

# 将新数据合并到现有对象中
$existingData += $newData

# 转换为JSON并覆盖写入文件
$existingData | ConvertTo-Json -Depth 100 | Out-File track.json

说明

  1. 禁止直接用-Append写入JSON片段:ConvertTo-Json每次输出完整JSON对象,追加会破坏结构
  2. 使用-AsHashtable:将JSON转换为可修改的哈希表,方便合并键值对(默认转换的PSCustomObject无法直接追加键)
  3. 覆盖写入:确保最终文件是单个完整的JSON对象

内容的提问来源于stack exchange,提问作者jonh bishop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:06:26