【问题标题】:Why does my generated JSON have too many "\\"?为什么我生成的 JSON 有太多“\\”?
【发布时间】:2020-12-06 08:01:20
【问题描述】:

我有一个 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/

https://techcommunity.microsoft.com/t5/windows-powershell/why-does-my-generated-json-have-too-many-quot-quot/td-p/1592234

【问题讨论】:

    标签: json windows powershell web-deployment


    【解决方案1】:

    这是您所拥有内容的正确反斜杠数量。

    在 JSON 字符串中,反斜杠 (\) 需要使用另一个反斜杠 (\\) 进行转义。

    【讨论】:

    • 好的,好的,这对我很有帮助,非常感谢!我仍然有一个问题......我有很多部分我只想要一个反斜杠。我将如何达到那个目标?问候
    • 如果你想要有效的 JSON,你不能。但是如果您使用 JSON 解析器解析内容,它将被正确解析,即反斜杠将再次被转义。
    • 再次感谢您的评论!我想问我如何解析 JSON,因为我不擅长 JSON,也不擅长 powershell……而且我仍然可以使用 powershell 将它从 json 转换回正常状态吗? (ConvertFrom-Json) 问候
    【解决方案2】:

    有一种方法可以转义 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":  ""
    }
    

    【讨论】:

    • 但现在我遇到的问题是,当我将它从 JSON 转换回 json 时,它会将所有值都输入为 null...知道为什么会这样吗?
    • 因为是无效的JSON,所以实际上不是 JSON。
    • 是的@RobbyCornelissen 你是对的,仍然为了满足用户的需求,我已经发布了这个解决方案。
    猜你喜欢
    • 2014-01-28
    • 2017-11-29
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2020-05-14
    • 2015-12-09
    • 2021-05-05
    • 2023-03-14
    相关资源
    最近更新 更多