为什么我生成的 JSON 有太多“\\”?
Why does my generated JSON have too many "\\"?
我有一个 Powershell 脚本,它生成一个包含数据的 JSON 文件。
不过我对这个文件有疑问。它产生双倍数量的“\”!
你知道我怎么解决这个问题吗?
这是我生成 JSON 文件的代码:
[ordered]@{
pcname='ENTER HERE';
share='\ENTER HERE\C$';
filename='ENTER HERE';
destfilepath='some\folder';
destfile='$in.share$in.destfilepath$in.filename';
RDdestfile='C:$in.destfilepath\';
Username="ENTER HERE";
Password="ENTER HERE";
EncryptedPassword=""
} | ConvertTo-Json | Out-File "$secFile"
$secFile 只是保存文件的路径。如果你也需要这个,请告诉我。
输出 JSON 文件看起来像这样:
{
"pcname": "ENTER HERE",
"share": "\\ENTER HERE\C$",
"filename": "ENTER HERE",
"destfilepath": "some\folder",
"destfile": "$in.share\$in.destfilepath\$in.filename",
"RDdestfile": "C:\$in.destfilepath\",
"Username": "ENTER HERE",
"Password": "ENTER HERE",
"EncryptedPassword": ""
}
问候
马丁
编辑:我还在 PowerShell.org 论坛和 Microsoft 技术社区中发布了这个问题,让你知道
https://powershell.org/forums/topic/why-does-my-generated-json-have-too-many/
这是您拥有的内容的正确反斜杠数。
在 JSON 字符串中,一个反斜杠 (\
) 需要用另一个反斜杠 (\
) 进行转义。
有办法逃避 JSON:
[ordered]@{
pcname='ENTER HERE';
share='\ENTER HERE\C$';
filename='ENTER HERE';
destfilepath='some\folder';
destfile='$in.share$in.destfilepath$in.filename';
RDdestfile='C:$in.destfilepath\';
Username="ENTER HERE";
Password="ENTER HERE";
EncryptedPassword=""
} | ConvertTo-Json | Foreach {[System.Text.RegularExpressions.Regex]::Unescape($_)} | Out-File "$secFile"
这将使反斜杠转义。输出:
{
"pcname": "ENTER HERE",
"share": "\ENTER HERE\C$",
"filename": "ENTER HERE",
"destfilepath": "some\folder",
"destfile": "$in.share$in.destfilepath$in.filename",
"RDdestfile": "C:$in.destfilepath\",
"Username": "ENTER HERE",
"Password": "ENTER HERE",
"EncryptedPassword": ""
}
我有一个 Powershell 脚本,它生成一个包含数据的 JSON 文件。
不过我对这个文件有疑问。它产生双倍数量的“\”!
你知道我怎么解决这个问题吗?
这是我生成 JSON 文件的代码:
[ordered]@{
pcname='ENTER HERE';
share='\ENTER HERE\C$';
filename='ENTER HERE';
destfilepath='some\folder';
destfile='$in.share$in.destfilepath$in.filename';
RDdestfile='C:$in.destfilepath\';
Username="ENTER HERE";
Password="ENTER HERE";
EncryptedPassword=""
} | ConvertTo-Json | Out-File "$secFile"
$secFile 只是保存文件的路径。如果你也需要这个,请告诉我。
输出 JSON 文件看起来像这样:
{
"pcname": "ENTER HERE",
"share": "\\ENTER HERE\C$",
"filename": "ENTER HERE",
"destfilepath": "some\folder",
"destfile": "$in.share\$in.destfilepath\$in.filename",
"RDdestfile": "C:\$in.destfilepath\",
"Username": "ENTER HERE",
"Password": "ENTER HERE",
"EncryptedPassword": ""
}
问候
马丁
编辑:我还在 PowerShell.org 论坛和 Microsoft 技术社区中发布了这个问题,让你知道
https://powershell.org/forums/topic/why-does-my-generated-json-have-too-many/
这是您拥有的内容的正确反斜杠数。
在 JSON 字符串中,一个反斜杠 (\
) 需要用另一个反斜杠 (\
) 进行转义。
有办法逃避 JSON:
[ordered]@{
pcname='ENTER HERE';
share='\ENTER HERE\C$';
filename='ENTER HERE';
destfilepath='some\folder';
destfile='$in.share$in.destfilepath$in.filename';
RDdestfile='C:$in.destfilepath\';
Username="ENTER HERE";
Password="ENTER HERE";
EncryptedPassword=""
} | ConvertTo-Json | Foreach {[System.Text.RegularExpressions.Regex]::Unescape($_)} | Out-File "$secFile"
这将使反斜杠转义。输出:
{
"pcname": "ENTER HERE",
"share": "\ENTER HERE\C$",
"filename": "ENTER HERE",
"destfilepath": "some\folder",
"destfile": "$in.share$in.destfilepath$in.filename",
"RDdestfile": "C:$in.destfilepath\",
"Username": "ENTER HERE",
"Password": "ENTER HERE",
"EncryptedPassword": ""
}