2015-06-09 178 views
2

我有一個CSV文件,我試圖使用PowerShell將其轉換爲JSON。使用PowerShell將CSV轉換爲JSON和JSON爲CSV

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/" 
} 

當我運行命令,

獲取內容-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/" 
    } 
] 

回答

1

您的CSV doen't看起來像一個「正確」的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 
+0

謝謝。這正是我想要的。 – Ishan

0

這是怎麼回事?

[email protected]" 
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 
+0

你得到的JSON是 [ { 「名」: 「維基百科」, 「URL」: 「https://en.wikipedia.org/wiki/%s」 },{ 「名」: 「WolframAlpha的」, 「URL」:「http://www.wolframalpha.com /輸入/ I =%S」 },{ 「姓名?」: 「驅動器」, 「URL」: 「http://www.drive.google.com/」 } ] 這是不是我想要的。查看我的問題中的JSON示例。 – Ishan