我可以用PowerShell v2修改JSON请求吗?
我正在尝试使用PowerShell v2(我的版本没有JSON或Invoke-RestMethod cmdlet的有用转换)修饰一些JSON响应,以便至少可以将响应输出到一个CSV文件。我可以使用它来搜索数据,但我很难使用Export-CSV cmdlet获得正确的格式 这可能吗 我的基本代码是:我可以用PowerShell v2修改JSON请求吗?,json,powershell-2.0,Json,Powershell 2.0,我正在尝试使用PowerShell v2(我的版本没有JSON或Invoke-RestMethod cmdlet的有用转换)修饰一些JSON响应,以便至少可以将响应输出到一个CSV文件。我可以使用它来搜索数据,但我很难使用Export-CSV cmdlet获得正确的格式 这可能吗 我的基本代码是: [string]$url = "http://saucelabs.com/rest/v1/info/browsers/webdriver" enter code here`$temp = "Sauce
[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 |转换为Csv-分隔符“{”-NoTypeInformation |输出文件$temp
或者只是将数据导出为默认值
$json |导出Csv-路径$temp
两者都只需在CSV文件中提供类型信息。在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()
}
}
}
在这种情况下,什么是写入字符串?我已经尝试过了,但是我得到了一个错误,它不是一个可识别的cmdlet。对该术语的Google搜索没有显示任何内容。很抱歉,我错过了一部分或代码,让我们看一下编辑。现在可以理解了。谢谢!