PowerShell "ConvertTo-Json" испортил вывод в формате JSON
1) $ Getjsonfilecontent = Get-Content "C: \ Scripts \ CreateADF-Datasets \ BUSI_RULE_BUILD_LOCATION_CODES_Source_Def.json" -Raw | ConvertFrom-Json
2) Добавьте некоторые значения пары ключей в файл json
3) $Getjsonfilecontent | ConvertTo-Json -Depth 100 | % { [System.Text.RegularExpressions.Regex]::Unescape($_) } | set-content $ updatedleafjsonpath (updatedleafjsonpath является копией базового файла 'Getjsonfilecontent')
когда я делаю это, я вижу, что какой-то формат искажен из "$ updatedleafjsonpath", как показано ниже Все "\" отсутствуют, и "\n" также запутано в моем выводе. Примечание. В том же файле json есть другой раздел, в котором значения пар ключей не обновляются как часть шага 2, но эти разделы не обновляются и должны оставаться такими, как есть, до и после преобразования. Любая помощь в этом действительно приветствуется.
Input: same output is expected.
"typeProperties": {
"format": {
"type": "TextFormat",
"columnDelimiter": "|",
"rowDelimiter": "\n",
"quoteChar": "\"",
"nullValue": "\"\"",
"encodingName": null,
"treatEmptyAsNull": true,
"skipLineCount": 0,
"firstRowAsHeader": false
},
"fileName": "[parameters('Veh_Obj_properties_typeProperties_fileName')]",
"folderPath": "[parameters('Veh_Obj_properties_typeProperties_folderPath')]"
}
}
Что я получил после конвертации:
"typeProperties": {
"format": {
"type": "TextFormat",
"columnDelimiter": "|",
"rowDelimiter": "
",
"quoteChar": """,
"nullValue": """",
"encodingName": null,
"treatEmptyAsNull": true,
"skipLineCount": 0,
"firstRowAsHeader": false
},
"fileName": "[parameters('Veh_Obj_properties_typeProperties_fileName')]",
"folderPath": "[parameters('Veh_Obj_properties_typeProperties_folderPath')]"
}
1 ответ
never mind, got the answer.. added some more lines to code to make it work
$Getjsonfilecontent | ConvertTo-Json -Depth 100 | Out-File $Updatedleafjsonpath -Force
# Remove unwanted Pattern
$ReplacePatterns = @{
"\\u003c" = "<"
"\\u003e" = ">"
"\\u0027" = "'"
}
$InputJson = Get-Content -Path $Getjsonfilecontent | Out-String
foreach ($Pattern in $ReplacePatterns.GetEnumerator())
{
$InputJson = $InputJson -replace $Pattern.Key, $Pattern.Value
}
$InputJson | Out-File -FilePath $Updatedleafjsonpath