我正在编写一个脚本来更改JSON文件,但是当文件转换回JSON时,它会扩展特殊字符.
例如,JSON文件包含带有"&"的密码.复制问题的快速方法是使用以下命令:
PS>"密码&123"| Convertto-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"
Run Code Online (Sandbox Code Playgroud)
- 这是一个简化的JSON文件的例子
{
"Server1":
{
"username":"root",
"password":"Password&dfdf"
},
"Server2":
{
"username":"admin",
"password":"Password&1234"
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 win_shell 将 powershell 输出转换为 json 格式,以便稍后可以对其进行过滤。问题是我的 Json 格式很糟糕。
这是代码
- win_shell: |
Get-ChildItem -Path <some_path> |
Where-Object {$_.PSIsContainer} | Sort-Object LastWriteTime -Descending |
Select-Object -First 20 | ConvertTo-Json
register: register_results
- debug:
var: register_results
Run Code Online (Sandbox Code Playgroud)
我得到的标准输出行不干净,无法在 json 过滤器中使用:
"stderr": "",
"rc": 0,
"stdout_lines": [
"[",
" {",
" \"Name\": \"976\",",
" \"FullName\"\"F:\\\\some\\\\path\\\\to\\\\folder\\\\976\",",
" \"Parent\": {",
" \"Name\": \"first\",",
" \"Parent\": \"All\",",
" \"Exists\": true,",
" \"Root\": \"F:\\\\\",",
" \"Extension\": \"\",",
etc...
Run Code Online (Sandbox Code Playgroud)
当我尝试过滤“父级”或“名称”时,这些额外的空格会导致错误。看起来除了“ConvertToJson”之外还必须有其他参数才能使输出更清晰。
有办法做到这一点吗?