Regex Powershell JSON转换删除unicode转义字符而不删除文字\n
我的问题与这个问题相似: 在powershell中导入和导出ARM模板时,使用Regex Powershell JSON转换删除unicode转义字符而不删除文字\n,regex,powershell,arm-template,azure-data-factory-2,Regex,Powershell,Arm Template,Azure Data Factory 2,我的问题与这个问题相似: 在powershell中导入和导出ARM模板时,使用Convert FromJson和Convert ToJson引入unicode转义序列 我使用代码再次取消了scape 一些示例代码(为了清晰起见,多行代码): 我读了Unescape 结果在输出文件中是相同的,只是literal\n的所有实例(在原始JSON文件中)都转换为实际的回车。这会破坏手臂模板 如果不包括Unescape代码,则会保留\n,但unicode字符也会保留,这也会破坏ARM模板 似乎我需要预先
Convert FromJson
和Convert ToJson
引入unicode转义序列
我使用代码再次取消了scape
一些示例代码(为了清晰起见,多行代码):
我读了Unescape
结果在输出文件中是相同的,只是literal\n
的所有实例(在原始JSON文件中)都转换为实际的回车。这会破坏手臂模板
如果不包括Unescape代码,则会保留\n
,但unicode字符也会保留,这也会破坏ARM模板
似乎我需要预先转义\n
,因此当我调用Unescape时,它们会变成漂亮的小\n
。在调用unescape之前,我尝试了一些方法,比如添加这个
$armADFString = $armADFString -replace("\\n","\u000A")
这并没有给我所需要的结果
有人遇到这个问题并解决了吗?有没有成功的转义艺术家?我重新阅读了Unescape文档,发现它基本上也会删除前导的
\
字符,所以我尝试了这段不太可能的代码:
$armADF = Get-Content -Path $armFile -Raw | ConvertFrom-Json
$armADFString = $armADF | ConvertTo-Json -Depth 50
$armADFString = $armADFString -replace("\\n","\\n")
$armADFString |
ForEach-Object { [System.Text.RegularExpressions.Regex]::Unescape($_) } |
Out-File $outputFile
当然-将\\n
替换为\\n
完全有意义:|
任何人都非常乐意提出更优雅的解决方案
编辑:我正在部署ADF ARM模板,这些模板本身是基于JSON的。长话短说,我还发现我需要添加以下内容,以防止它逃避合法转义的引用:
$armADFString = $armADFString -replace('\\"','\\"')
好吧,知道基于正则表达式的
-replace
操作符只需要在匹配的部分上转义,这是有意义的(+1;-)是的。
$armADFString = $armADFString -replace('\\"','\\"')