PowerShell的字符串转换成JSON
问题描述:
在PowerShell中我有我从文件中读取并需要转换为JSON以下字符串:PowerShell的字符串转换成JSON
"@{Account='User01';Domain='Domain01';Admin='True'}"
在我的PS脚本中,我尝试这样做(简体):
$myStr = "@{Account='User01';Domain='Domain01';Admin='True'}" | ConvertTo-Json
$mystr
的myStr
结果是:
"@{Account=\u0027User01\u0027;Domain=\u0027Domain01\u0027;Admin=\u0027True\u0027}"
,而不是一个JSON我可以使用。请注意字符串开头的@
符号是我从文件中得到的。
如何将它转换为我可以使用的对象?
答
您可以尝试一些字符串操作以获得预期的JSON格式,然后使用ConvertFrom-Json
将其转换为PSCustomObject。
简单的例子:(简单,因为这假定被替换这些字符将只定界符)
# First, clean up the string.
PS C:\> $mystring = "@{Account='User01';Domain='Domain01';Admin='True'}"
PS C:\> $mystring = $mystring -replace "^@", ""
PS C:\> $mystring = $mystring -replace "=", ":"
PS C:\> $mystring = $mystring -replace ";", ","
PS C:\> $mystring
{Account:'User01',Domain:'Domain01',Admin:'True'}
# Afterwards, convert to PSCustomObject.
PS C:\> $myobject = $mystring | ConvertFrom-Json
PS C:\> $myobject
Account Domain Admin
------- ------ -----
User01 Domain01 True
这也可以被转换回JSON:
PS C:\> $myobject | ConvertTo-Json
{
"Account": "User01",
"Domain": "Domain01",
"Admin": "True"
}