我试图使用PowerShell v2(我的版本没有有用的ConverFrom-Json或Invoke-RestMethod cmdlet)来美化一些JSON响应,所以我可以输出响应至少一个CSV文件。我可以使用它来搜索数据,但是使用Export-CSV cmdlet很难获得正确的格式。
这可能吗?
我的基本代码是:
[string]$url = "http://saucelabs.com/rest/v1/info/browsers/webdriver"
enter code here`$temp = "SauceLabsSupportedEnvs.csv"
# Accessing the REST API at Sauce Labs and downloading to a file
$json = (New-Object Net.Webclient).DownloadString($url)
我想要做的是将$ json响应变为可用的东西。我尝试过但未能开始工作的是这两个:
尝试转换分隔符 $ json | ConvertTo-Csv -Delimiter" {" -NoTypeInformation | Out-File $ temp
或者只是导出数据是默认的 $ json | Export-Csv -Path $ temp
两者都只是给我CSV文件中的类型信息。
答案 0 :(得分:1)
在我自己的PowerShell V1.0或PowerShell V2.0中,我将JSON响应转换为XML然后利用它。当JSON太大时,这在PowerShell 3.0中也很有用。
Add-Type -AssemblyName System.ServiceModel.Web, System.Runtime.Serialization
$utf8 = [System.Text.Encoding]::UTF8
function Write-String
{
PARAM([Parameter()]$stream,
[Parameter(ValueFromPipeline=$true)]$string)
PROCESS
{
$bytes = $utf8.GetBytes($string)
$stream.Write( $bytes, 0, $bytes.Length )
}
}
function Convert-JsonToXml
{
PARAM([Parameter(ValueFromPipeline=$true)][string[]]$json)
BEGIN
{
$mStream = New-Object System.IO.MemoryStream
}
PROCESS
{
$json | Write-String -stream $mStream
}
END
{
$mStream.Position = 0
try
{
$jsonReader = [System.Runtime.Serialization.Json.JsonReaderWriterFactory]::CreateJsonReader($mStream,[System.Xml.XmlDictionaryReaderQuotas]::Max)
$xml = New-Object Xml.XmlDocument
$xml.Load($jsonReader)
$xml
}
finally
{
$jsonReader.Close()
$mStream.Dispose()
}
}
}
function Convert-XmlToJson
{
PARAM([Parameter(ValueFromPipeline=$true)][Xml]$xml)
PROCESS
{
$mStream = New-Object System.IO.MemoryStream
$jsonWriter = [System.Runtime.Serialization.Json.JsonReaderWriterFactory]::CreateJsonWriter($mStream)
try
{
$xml.Save($jsonWriter)
$bytes = $mStream.ToArray()
[System.Text.Encoding]::UTF8.GetString($bytes,0,$bytes.Length)
}
finally
{
$jsonWriter.Close()
$mStream.Dispose()
}
}
}