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

PowerShell移除嵌套JSON对象length属性失效问题排查

问题根因
  • 你的JSON结构中record1、record2字段的取值是数组类型,数组内部才是存储length自定义属性的实际对象。
  • 原代码里$_.Value直接取到的是外层数组,PowerShell的数组本身自带只读的Length内置属性(作用是返回数组元素总数),所以Get-Member检测到的length是数组的固有属性,根本不是你要删除的自定义字段。
  • 后续调用Remove("length")的操作对象是外层数组,既删不掉数组的内置只读属性,也完全没有遍历到数组内部的目标对象,自然最终输出文件和原文件内容完全一致。
修正方案

只需要在遍历每个record时,先遍历对应数组内的所有元素,再对元素执行属性删除操作即可。另外建议把ConvertTo-Json的序列化深度设为10,避免默认深度不足导致嵌套JSON内容被意外截断:

$infile = "C:\Temp\input.json"
$outfile = "C:\Temp\output.json"

$json = Get-Content $infile -Encoding UTF8 | ConvertFrom-Json
$records = $json.records

$records.PSObject.Properties | ForEach-Object {
    # 遍历当前record对应数组下的所有对象
    foreach ($item in $_.Value) {
        if ($item.PSObject.Properties.Name -contains "length") {
            Write-Host "length property found."
            $item.PSObject.Properties.Remove("length")
        }
    }
}

$json | ConvertTo-Json -Depth 10 | Out-File $outfile -Encoding UTF8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:18:21