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

PowerShell中如何按JSON对象的Index键值对元素进行排序

JSON按Index字段排序PowerShell实现方案

问题原因

原有代码不生效的核心原因是:你读取JSON后得到的是单个PS自定义对象,PIPoint、Custom Location等字段都是该对象的属性,而非数组元素,直接对对象执行Sort-Object不会产生排序效果。

正确实现代码

# 读取JSON文件
$json = Get-Content 'C:\column.json' | ConvertFrom-Json
# 取出所有属性并按Index数值排序
$sortedProperties = $json.PSObject.Properties | Sort-Object { [int]$_.Value.Index }
# 构建有序对象保留排序结果
$sortedObj = [ordered]@{}
foreach ($prop in $sortedProperties) {
    $sortedObj[$prop.Name] = $prop.Value
}
# 输出排序后的JSON
$sortedObj | ConvertTo-Json -Depth 10 | Out-File 'C:\column_sorted.json' -Encoding UTF8

关键说明

  • 必须先通过PSObject.Properties取出对象的所有属性集合,才能执行排序操作
  • 排序时将Index字段转为int类型,避免字符串排序导致的顺序错误(比如字符串"10"会排在"2"前面)
  • 排序后通过有序字典[ordered]重构对象,才能保留排序后的属性顺序
  • ConvertTo-Json添加-Depth参数避免嵌套层级过深时内容被截断,指定-Encoding UTF8避免输出文件乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:33:01