我有一个test.json文件,如下所示
{
"ConnectionStrings":
{"Default": "Server=1.2.3.4;User ID=meme;Password=youyou;Database=meyou;" }
}
我喜欢使用power-shell更改其中的几个字段。我的代码如下
$a = Get-Content 'G:\sandbox\test.json' -raw | ConvertFrom-Json
$a.ConnectionStrings = '"Default": "Server=5.6.7.8;User ID=hehe;Password=sheshe;Database=heshe;"'
$a | ConvertTo-Json | set-content 'G:\sandbox\test.json'
test.json如下所示。
"ConnectionStrings": "\"Default\": \"Server=5.6.7.8;User ID=hehe;Password=sheshe;Database=heshe;\""
基本上所有的双引号都带有前缀\。如何从脚本的输出中删除这个额外的\?
答案 0 :(得分:2)
PetSerAl在对该问题的评论中提供了关键指针:
$a.ConnectionStrings.Default="Server=5.6.7.8;User ID=hehe;Password=sheshe;Database=heshe;"
即,
而不是尝试将类似JSON的片段'"Default": "Server=..."'
分配给顶级$a.ConnectionStrings
对象,以尝试更新嵌套的Default
对象,
将"Server=..."
值分配给$a.ConnectionStrings.Default
属性,依赖于ConvertFrom-Json
将输入JSON正确映射到PowerShell中的嵌套自定义对象这一事实。
您自己的尝试导致存储在$a.ConnectionStrings
中的嵌套对象被替换为字符串文字("Default": "Server=..."
),其嵌入式 {{1 chars。稍后需要"
- 在通过\
重新转换为JSON的过程中转义。