如何解决为什么我生成的JSON有太多“ \\”?
我有一个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 Tech Community中,只是您知道
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": ""
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。