如何在PowerShell中打印JSON数组的第一个元素?
如何正确打印JSON数组的第一个元素?
你遇到的问题核心是:ConvertTo-Json输出的是单个字符串类型的JSON内容,而非PowerShell的对象数组。所以$jsonData[0]只是取这个字符串的第一个字符(也就是[),而非JSON数组里的第一个元素。
下面是两种可行的解决方法:
方法1:转换JSON前先提取第一个元素(推荐)
直接在将对象数组转JSON之前,先取出第一个元素再单独转JSON,避免多余的转换操作:
$csvData = Import-Csv -Path "addresses.csv" $newCsvData = foreach($row in $csvData){ [PSCustomObject]@{ name = $row.name lastname = $row.lastname } } # 提取第一个元素并转换为JSON $firstItemJson = $newCsvData[0] | ConvertTo-Json Write-Host $firstItemJson
执行后会输出第一个元素的JSON格式:
{ "name": "John", "lastname": "Doe" }
方法2:将JSON字符串转回对象后提取元素
如果已经生成了完整的JSON字符串,可以先把它转回PowerShell对象数组,再提取第一个元素:
$csvData = Import-Csv -Path "addresses.csv" $newCsvData = foreach($row in $csvData){ [PSCustomObject]@{ name = $row.name lastname = $row.lastname } } $jsonData = $newCsvData | ConvertTo-Json # 将JSON字符串转回对象数组,取第一个元素 $firstItem = ($jsonData | ConvertFrom-Json)[0] # 若需要输出JSON格式,再转一次 Write-Host ($firstItem | ConvertTo-Json)
内容的提问来源于stack exchange,提问作者Matias Salimbene
相关产品推荐
相关产品推荐

