【发布时间】:2020-07-28 12:42:11
【问题描述】:
我有一些自动生成的 json 文件需要使用 PowerShell 进行修改。但是,当我使用 ConvertFrom-Json 时,在某些情况下会丢失字符。
我尝试过使用
ForEach-Object {
[System.Text.RegularExpressions.Regex]::Unescape($_)
}
处理转义字符,但没有运气
字符串被修改的例子
<?xml version=\"1.0\" encoding=\"UTF-16\"?><ExchangeRates>
变成了
<?xml version="1.0" encoding="UTF-16"?><ExchangeRates>
丢失反斜杠。
如何在不转换文件的无意部分的情况下解决这个问题?
【问题讨论】:
-
首先不要使用
Regex.Unescape。你需要做什么? -
你能给我们展示一个发生这种行为的完整示例 json 字符串吗?
-
@MathiasR.Jessen xml 行是我测试它的 json 示例文件的一部分。
"Compose": { "runAfter": { "Transform_Exchange_Rates": [ "Succeeded" ] }, "type": "Compose", "inputs": "<?xml version=\"1.0\" encoding=\"UTF-16\"?><ExchangeRates>" }, -
在这种情况下,我不太确定我是否理解您的问题 - PowerShell 正确解码了 json 文件中的文字字符串值。
ConvertTo-Json将(也正确地)再次添加转义序列 -
对我来说
$(Get-Content "C:\temp\test.txt") | Convertfrom-Json | ConvertTo-Json -Compress给出:{"Compose":{"runAfter":{"Transform_Exchange_Rates":"Succeeded"},"type":"Compose","inputs":"\u003c?xml version=\"1.0\" encoding=\"UTF-16\"?\u003e\u003cExchangeRates\u003e"}}。好像没问题。
标签: json regex powershell