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

如何给PowerShell数组数据添加列名并转换为JSON格式

PowerShell实现:将扁平化学生数据转换为指定JSON格式

需求说明

输入为空格分隔的扁平化字符串,每3个连续字段对应一名学生的Name、RollNo、SubjectID,需转换为指定的JSON对象格式(可选择标准数组格式或示例中的逗号分隔对象格式)。

实现代码

1. 标准JSON数组格式(推荐,符合JSON规范)

# 输入的扁平化学生数据
$inputData = "student1 RL123 S12 student2 RL423 S32 student6 RL166 S02 student34 RL993 P12 student99 RL923 S12"

# 拆分字符串为单个元素数组,按每3个元素分组
$splitData = $inputData -split '\s+'
$studentGroups = for ($i = 0; $i -lt $splitData.Count; $i += 3) {
    $splitData[$i..($i + 2)]
}

# 转换为自定义对象并生成标准JSON数组
$jsonArray = $studentGroups | ForEach-Object {
    [PSCustomObject]@{
        Name       = $_[0]
        RollNo     = $_[1]
        SubjectID  = $_[2]
    }
} | ConvertTo-Json -Depth 10

# 输出结果
$jsonArray

执行后输出的标准JSON格式:

[
    {
        "Name": "student1",
        "RollNo": "RL123",
        "SubjectID": "S12"
    },
    {
        "Name": "student2",
        "RollNo": "RL423",
        "SubjectID": "S32"
    },
    {
        "Name": "student6",
        "RollNo": "RL166",
        "SubjectID": "S02"
    },
    {
        "Name": "student34",
        "RollNo": "RL993",
        "SubjectID": "P12"
    },
    {
        "Name": "student99",
        "RollNo": "RL923",
        "SubjectID": "S12"
    }
]

2. 匹配示例的逗号分隔对象格式(非标准JSON)

如果需要完全匹配你提供的示例格式(无数组包裹,仅逗号分隔对象),可使用以下代码:

# 输入的扁平化学生数据
$inputData = "student1 RL123 S12 student2 RL423 S32 student6 RL166 S02 student34 RL993 P12 student99 RL923 S12"

# 拆分并分组数据
$splitData = $inputData -split '\s+'
$studentGroups = for ($i = 0; $i -lt $splitData.Count; $i += 3) {
    $splitData[$i..($i + 2)]
}

# 生成单个对象的JSON并拼接
$formattedOutput = $studentGroups | ForEach-Object {
    [PSCustomObject]@{
        Name       = $_[0]
        RollNo     = $_[1]
        SubjectID  = $_[2]
    } | ConvertTo-Json -Depth 10
} | Join-String -Separator ",`n"

# 输出结果
$formattedOutput

执行后输出与示例完全一致的格式:

{
    "Name": "student1",
    "RollNo": "RL123",
    "SubjectID": "S12"
},
{
    "Name": "student2",
    "RollNo": "RL423",
    "SubjectID": "S32"
},
{
    "Name": "student6",
    "RollNo": "RL166",
    "SubjectID": "S02"
},
{
    "Name": "student34",
    "RollNo": "RL993",
    "SubjectID": "P12"
},
{
    "Name": "student99",
    "RollNo": "RL923",
    "SubjectID": "S12"
}

关键逻辑说明

  • 使用 -split '\s+' 拆分字符串:匹配任意数量的空格,避免因连续空格产生空元素
  • 循环步长设为3:确保每3个元素对应一名学生的完整信息
  • [PSCustomObject] 构建结构化对象:保证JSON输出的键名与需求完全一致
  • ConvertTo-Json 转换格式:-Depth 10 确保嵌套对象(此处无嵌套)能正确转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:50:34