How to remove special chars in JSON file format
Sometimes you want to write out an object in JSON format to a file. This is fine and what you would normally use ConvertTo-Json for.
The only issue is the generated JSON will convert some chars like
<
to \u003c
which is not ideal for your JSON output. This seems to be a limitation with the PowerShell command.To fix this, use this Regex snippet below to replace the escaped tokens in your output to make the file more readable.
$data | ConvertTo-Json -Depth 10 | ForEach-Object { [Regex]::Replace($_, "\\u(?<Value>[a-zA-Z0-9]{4})", { param($m) ([char]([int]::Parse($m.Groups['Value'].Value, [System.Globalization.NumberStyles]::HexNumber))).ToString() } )} | Out-File $OutputFilename -Force
This will turn your output from:
"Key": "WLSProtocol",
"Values": {
"Test": "\u003chttpsTransport maxReceivedMessageSize=\"1255360\"/\u003e",
"Staging": "\u003chttpsTransport maxReceivedMessageSize=\"1255360\"/\u003e",
"Production": "\u003chttpsTransport maxReceivedMessageSize=\"1255360\"/\u003e"
}
to
"Key": "WLSProtocol",
"Values": {
"Test": "<httpsTransport maxReceivedMessageSize=\"1255360\"/>",
"Staging": "<httpsTransport maxReceivedMessageSize=\"1255360\"/>",
"Production": "<httpsTransport maxReceivedMessageSize=\"1255360\"/>",
}
Note: you still will need to escape some chars like
"
and \
but these are more managable.Last modified 2yr ago