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

如何使用PowerShell替换带注释JSON文件中的值并保留注释保存

解决PowerShell修改带注释JSON保留注释的问题

现有代码问题梳理

  • 标准ConvertFrom-Json命令默认会忽略所有注释,将内容转换为PS对象后注释信息会完全丢失,后续操作无法恢复
  • 你代码中额外添加的正则主动清除了//和/* */格式的注释,相当于主动丢弃了需要保留的内容,自然无法实现需求

推荐解决方案

直接使用精准正则匹配替换的方案,不需要解析JSON结构,仅修改指定字段的值,原有所有注释、缩进、换行格式都会完整保留,代码示例如下:

# 定义JSON文件路径
$jsonfile = "你的config.json实际路径"

# 读取文件原始内容,不要做JSON转换
$rawContent = Get-Content -Path $jsonfile -Raw

# 精准匹配FramewokSettings节点下的Version字段,替换值为10,保留该行后续的注释
$updatedContent = $rawContent -replace '(?<="FramewokSettings"\s*:\s*{[\s\S]*?"Version"\s*:\s*)"[^"]+"', '"10"'

# 将修改后的内容写回文件,-NoNewline参数避免额外添加换行破坏原有格式
$updatedContent | Set-Content -Path $jsonfile -NoNewline -Encoding UTF8

注意事项

  • 如果JSON中存在多个名为Version的字段,上述示例中的正则已经通过上下文匹配限定了仅修改FramewokSettings节点下的字段,不会出现误改
  • 如果你的Version值为不带引号的数字类型,可将正则规则调整为(?<="FramewokSettings"\s*:\s*{[\s\S]*?"Version"\s*:\s*)\d+,替换值直接写10即可
  • 不要将带注释的JSON通过ConvertFrom-Json转对象后再用ConvertTo-Json序列化,原生JSON规范本身不支持注释,序列化后注释必然丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:36:06