Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Powershell JSON转换删除unicode转义字符而不删除文字\n_Regex_Powershell_Arm Template_Azure Data Factory 2 - Fatal编程技术网

Regex Powershell JSON转换删除unicode转义字符而不删除文字\n

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模板 似乎我需要预先

我的问题与这个问题相似:

在powershell中导入和导出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('\\"','\\"')