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

PowerShell保存JSON文件缺失外层方括号导致文件不可读问题求助

问题原因
  • 单元素数组自动解包:PowerShell中通过管道传递仅包含1个元素的数组时,系统会自动将其拆包为单个对象而非数组类型传递。ConvertTo-Json处理单个对象时会输出标准JSON对象格式(无外层[]),仅当输入为数组类型时才会输出带外层方括号的JSON数组格式,也就是你需要的合法格式。
  • Depth参数误用:你代码中ConvertTo-Json的-Depth参数传入了数组索引值$ArrayIndex,该参数的作用是控制JSON序列化的嵌套层级,和数组索引完全无关,设置错误会导致深层嵌套的数据被截断。
修复方案

在序列化前用@()运算符强制将数据包裹为数组类型,同时将Depth参数修改为合理的序列化深度即可,修改后的完整代码如下:

$ArrayIndex = $script:jsonDB.username.IndexOf($UserNametextBox.text)
$script:jsonDB = $script:jsonDB | Where-Object{$_ -ne $script:jsonDB[$ArrayIndex]}
# 核心修改:用@()强制转为数组,设置合理的序列化深度
@($script:jsonDB) | ConvertTo-Json -Depth 10 -Compress |
Set-Content C:\Support\HardwareCollection.json
$script:TableData = New-Object System.Collections.ArrayList
$script:TableData.AddRange($script:jsonDB)
$script:datagridview.DataBindings.DefaultDataSourceUpdateMode = 0 
$script:datagridview.DataSource= $script:TableData
# 补充:方法调用需要加括号才会实际执行
$script:datagridview.Refresh()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:48:04