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
Другие вопросы по тегам