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
相关产品推荐
相关产品推荐

