使用PowerShell将CSV转换为JSON,将JSON转换为CSV

时间:2015-06-09 05:21:30

标签: json powershell csv

我有一个CSV文件,我试图使用PowerShell转换为JSON。

CSV文件包含以下数据。

web_url.csv

wikipedia,https://en.wikipedia.org/wiki/%s
wolframalpha,http://www.wolframalpha.com/input/?i=%s
drive,http://www.drive.google.com/

我想以下列格式转换为json。同样,你如何将这个json转换回上面显示的格式的原始csv?

web_url.json

{
    "wikipedia": "https://en.wikipedia.org/wiki/%s",
    "wolframalpha": "http://www.wolframalpha.com/input/?i=%s",
    "drive": "http://www.drive.google.com/"
}

当我运行命令时,

  

Get-Content -path web_url.csv | ConvertFrom-Csv -Delimiter','|   的ConvertTo JSON的

它返回以下输出,这不是我想要的。

[
    {
        "wikipedia":  "wolframalpha",
        "https://en.wikipedia.org/wiki/%s":  "http://www.wolframalpha.com/input/?i=%s"
    },
    {
        "wikipedia":  "drive",
        "https://en.wikipedia.org/wiki/%s":  "http://www.drive.google.com/"
    }
]

3 个答案:

答案 0 :(得分:2)

你的csv对我来说看起来不像是一个“正确”的csv:列与行交换。如果你可以控制输入文件,你可以在那里修复它:

@'
wikipedia,wolframalpha,drive
https://en.wikipedia.org/wiki/%s,http://www.wolframalpha.com/input/?i=%s,http://www.drive.google.com/
'@ | ConvertFrom-Csv | ConvertTo-Json

如果无法做到这一点,您只需执行一些额外步骤即可获得所需:

$propertyList = @'
wikipedia,https://en.wikipedia.org/wiki/%s
wolframalpha,http://www.wolframalpha.com/input/?i=%s
drive,http://www.drive.google.com/
'@ | ConvertFrom-Csv -Header Name, Value

$properties = [ordered]@{}

foreach ($property in $propertyList) {
    $properties.Add($property.Name, $property.Value)
}

New-Object PSObject -Property $properties | ConvertTo-Json

再说一遍 - 需要做一些额外的工作:

(@'
{
    "wikipedia":  "https://en.wikipedia.org/wiki/%s",
    "wolframalpha":  "http://www.wolframalpha.com/input/?i=%s",
    "drive":  "http://www.drive.google.com/"
}
'@ | ConvertFrom-Json).PSObject.Properties |
    Select-Object Name, Value |
    ConvertTo-Csv -NoTypeInformation |
    Select-Object -Skip 1

答案 1 :(得分:2)

power shell脚本

import-csv“SampleInput.csv”| ConvertTo-Json | Add-Content -Path“output.json”

答案 2 :(得分:0)

这是怎么回事?

$csv=@"
wikipedia,https://en.wikipedia.org/wiki/%s
wolframalpha,http://www.wolframalpha.com/input/?i=%s
drive,http://www.drive.google.com/
"@

$obj= $csv |convertfrom-csv -delim ',' -Header "name","url"
#$obj

$json=$obj  |convertto-json 
#$json

$csv2 =$json |convertfrom-json |select -expand syncroot  |convertto-csv -NoTypeInformation -Delimiter ','
#$csv2
相关问题