这是dummy.json文件
{
"key1":"value1",
"key2":"value2"
}
我正在将此文件的内容读取到变量并输出它们
C:> $obj = Get-Content .\dummy.json
C:> $obj
{
"key1":"value1",
"key2":"value2"
}
C:> Write-Host "$obj"
{ "key1":"value1", "key2":"value2" }
我知道Get-Content不会保留换行符并加入" &#34 ;. Powershell keep text formatting when reading in a file
但为什么上述两项产出存在不一致之处呢?我猜Write-Host
正在正常工作。或者我错了吗?
答案 0 :(得分:3)
加入行不是Get-Content
(它的输出是字符串数组),而是将变量放在双引号("$obj"
)中。您可以通过自己加入这些行来避免这种情况:
Write-Host ($obj -join "`n")
Write-Host ($obj | Out-String)
Write-Host $($OFS="`n"; "$obj")
另一种选择是直接将文件作为单个字符串读取,例如像这样(需要PowerShell v3或更新版本):
$obj = Get-Content .\dummy.json -Raw
或者像这样:
$obj = [IO.File]::ReadAllText('.\dummy.json')