更新json插入带双引号的\

时间:2017-01-24 18:57:16

标签: powershell

我有一个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;\""

基本上所有的双引号都带有前缀\。如何从脚本的输出中删除这个额外的\?

1 个答案:

答案 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的过程中转义。