当前位置: 首页 > 面试题库 >

PowerShell:包含特殊字符的ConvertTo-Json问题

杭胜
2023-03-14
问题内容

我正在编写用于更改JSON文件的脚本,但是当文件转换回JSON时,它将扩展特殊字符。

例如,JSON文件包含带有“&”的密码。复制问题的快速方法是使用以下命令:

PS>“密码和123” | Convertto-Json输出为:“ Password \ u0026123”

##Here is how I import the JSON FILE:
$jsonfile = (Get-Content .\example.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
##Exporting JSON FILE without modifying it.
$jsonfile  | ConvertTo-Json |Out-File "new.json"

-这是简化的JSON FILE的示例

{
    "Server1":
    {
        "username":"root",
        "password":"Password&dfdf"
    },
    "Server2":
    {
        "username":"admin",
        "password":"Password&1234"
    }
}

问题答案:

这是由的自动字符转义功能引起的,Convertto-Json并且会影响多个符号,例如<>\'&

ConvertFrom-Json将正确读取转义的字符。使用您的示例:

PS C:\> {"Password\u0026123"} | ConvertFrom-Json
Password&123

您的示例代码将导致文件中的字符转义,但ConvertFrom-Json可以将其读回原始密码。见下文:

PS C:\> (Get-Content .\example.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
Server1                                  Server2
-------                                  -------
@{username=root; password=Password&dfdf} @{username=admin; password=Password&1234}

PS C:\> (Get-Content .\new.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
Server1                                  Server2
-------                                  -------
@{username=root; password=Password&dfdf} @{username=admin; password=Password&1234}

如果您需要将密码不转义地存储,则可能需要进行一些更复杂的工作。

另外,如果可能,请避免使用受影响的字符。



 类似资料:
  • 我必须使用exe来运行某个函数。但是该目录包含某些具有特殊字符的文件夹,比如“.”,“-”,所以它不会被执行。我可以像重命名文件名一样重命名目录名吗?我不确定需要做什么。 我使用Linux环境。下面是一段代码, 有人能建议我吗?谢谢

  • 问题内容: 我有一个 DOM元素: 有两个ID 和的字段..。我可以访问,没有任何问题,但是由于名称中包含句点,导致语法错误而失败。 如何访问这些属性? 问题答案: 使用方括号表示法: 这适用于任何对象,对于非标识符安全的字符以及访问你可能提前都不知道的键特别有用。

  • 问题内容: 我有一个问题。我从JSON获取信息,他返回了无效字符。JSON给我这个:“ 27 /”“,当我需要这个时:27”。我知道这是特殊字符的编码,但是当我使用NSString上的值在SQLite表中进行插入时,我不能使用27 /“,因为插入格式为:INSERT INTO FORMATOS(ID,NOMBRE)VALUES (“ 17”,“ 27””)。 我需要哪种方法在SQLlite中正确插

  • 问题内容: 我正在尝试使用该SQL从XML Server Expression的SQL Server 2008表中获取名字和姓氏。数据包含特殊字符。当我尝试sql时,出现以下错误: FOR XML无法序列化节点“ LastName”的数据,因为它包含XML不允许的字符(0x001B)。要使用FOR XML检索此数据,请将其转换为二进制,varbinary或图像数据类型,并使用BINARY BASE

  • 问题内容: 我想修补一个无法在此时升级到3.0的PowerShell 2.0环境。 我正在寻找PowerShell 3.0中cmdlet和cmdlet 的PowerShell 2.0脚本实现。 我对的兴趣最大,但也很好。 问题答案:

  • 问题内容: 我必须检测一个字符串是否包含任何特殊字符。我该如何检查?Swift支持正则表达式吗? 我尝试了上面的代码,但是只有当我输入第一个字符作为特殊字符时,它才匹配。 问题答案: 您的代码检查字符串中是否没有字符来自给定的集合。您要检查的是给定集合中是否 没有 任何 字符: __ 您还可以使用正则表达式实现此目的: 该模式匹配的字符 不在 AZ,az或0-9范围内。 Swift 2更新: Sw