如何避免ConvertFrom-Csv|ConvertTo-Json转换时生成带方括号的数组
解决方案
外层方括号产生的原因是
ConvertFrom-Csv返回结果为对象数组,ConvertTo-Json会自动将数组序列化为带外层方括号的标准JSON数组格式。
方案1:转换阶段直接处理(CSV仅含1行数据时适用)
如果你的CSV文件只有一行待转换数据,直接取转换后的第一个对象序列化即可,不会生成外层数组括号:
$TestFile = 'E:\TestFile.prn' if(Test-Path $TestFile) { (Get-Content $TestFile | ConvertFrom-Csv)[0] | ConvertTo-Json -Compress | Out-File "E:\TestFile.json" }
方案2:通用字符串裁剪方案(任意行数均适用)
如果你的CSV有多行数据,或者需要保留所有原有内容仅删除最外层方括号,可通过字符串处理直接裁剪首尾括号:
$TestFile = 'E:\TestFile.prn' if(Test-Path $TestFile) { $jsonContent = (Get-Content $TestFile | ConvertFrom-Csv) | ConvertTo-Json -Compress # Trim方法仅删除字符串首尾匹配的方括号,不会影响内容内部的方括号 $jsonContent.Trim('[]') | Out-File "E:\TestFile.json" }
注意事项
- 若CSV包含多行数据,删除外层方括号后的内容不属于标准JSON格式,请提前确认你的中间件支持该类格式的传输。
- 如果你没有使用
-Compress参数,生成的JSON首尾会包含换行、空格等空白字符,可将裁剪逻辑修改为$jsonContent.Trim().Trim('[]')先清除首尾空白再裁剪括号。
内容的提问来源于stack exchange,提问作者Caje96
相关产品推荐
相关产品推荐

