PowerShell: 특수 문자가 포함된 To-Json 변환 문제
나는 JSON 파일을 변경하기 위해 스크립트를 작성하고 있지만 파일이 JSON으로 다시 변환되면 특수 문자가 확장됩니다.
예를 들어 JSON 파일에는 "&"이 있는 암호가 포함되어 있습니다.문제를 빠르게 복제하는 방법은 다음 명령을 사용하는 것입니다.
PS> "Password&123" | Json으로 변환 출력: "Password\u0026123"
##Here is how I import the JSON FILE:
$jsonfile = (Get-Content .\example.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
##Exporting JSON FILE without modifying it.
$jsonfile | ConvertTo-Json |Out-File "new.json"
--여기 단순화된 JSON FILE의 예가 있습니다.
{
"Server1":
{
"username":"root",
"password":"Password&dfdf"
},
"Server2":
{
"username":"admin",
"password":"Password&1234"
}
}
Unescape() 메서드를 사용해 보십시오.
$jsonfile | ConvertTo-Json | % { [System.Text.RegularExpressions.Regex]::Unescape($_) } | Out-File "new.json"
이는 의 자동 문자 이스케이프 기능에 의해 발생합니다.Convertto-Json
그리고 그것은 다음과 같은 몇몇 상징들에 영향을 줍니다.<>\'&
ConvertFrom-Json은 이스케이프된 문자를 제대로 읽습니다.예제 사용:
PS C:\> {"Password\u0026123"} | ConvertFrom-Json
Password&123
그리고 당신의 예제 코드는 문자를 이스케이프한 파일을 생성하지만,ConvertFrom-Json
원래 암호로 다시 읽을 수 있습니다.아래 참조:
PS C:\> (Get-Content .\example.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
Server1 Server2
------- -------
@{username=root; password=Password&dfdf} @{username=admin; password=Password&1234}
PS C:\> (Get-Content .\new.json -Encoding Ascii) -join "`n" | ConvertFrom-Json
Server1 Server2
------- -------
@{username=root; password=Password&dfdf} @{username=admin; password=Password&1234}
암호를 이스케이프하지 않고 저장해야 하는 경우에는 좀 더 정교한 작업이 필요할 수 있습니다.유니코드 문자열을 이스케이프된 ASCII 문자열로 변환하는 방법에 대한 이 스레드를 참조하십시오.
또는 가능한 경우 영향을 받는 문자를 피합니다.
PowerShell 7.2로 테스트한 결과 유니코드 및 기타 특수 문자가 성공적으로 변환된 것으로 나타납니다.들여쓰기 또한 개선된 것으로 보입니다.
언급URL : https://stackoverflow.com/questions/29306439/powershell-convertto-json-problem-containing-special-characters
'programing' 카테고리의 다른 글
python: pywintyptes.datetime을 datetime.datetime으로 변환합니다. (0) | 2023.09.03 |
---|---|
오라클에서 프로시저 내부에 테이블을 만드는 방법은 무엇입니까? (0) | 2023.09.03 |
setFetchSize()는 언제 무엇으로 지정해야 합니까? (0) | 2023.09.03 |
Android: Android에서 Java 측에서 TextView로 중력을 설정하는 방법 (0) | 2023.09.03 |
백업 증분 백업 대 복제 (0) | 2023.09.03 |