2017-01-24 4 views
1

У меня есть файл test.json следующимОбновление JSON вставляя двойные кавычки

{ 
    "ConnectionStrings": 
     {"Default": "Server=1.2.3.4;User ID=meme;Password=youyou;Database=meyou;" } 
} 

мне нравится, чтобы изменить несколько полей в этом с помощью силовой оболочки. Мой код выглядит следующим образом:

$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' 

Тест.json выглядит следующим образом.

"ConnectionStrings": "\"Default\": \"Server=5.6.7.8;User ID=hehe;Password=sheshe;Database=heshe;\"" 

В основном все двойные кавычки имеют префикс \. Как я могу избавиться от этого дополнительного \ от вывода скрипта?

+2

'$ a.ConnectionStrings.Default =" Server = 5.6.7.8; User ID = hehe; Password = sheshe; Database = heshe; "' – PetSerAl

ответ

2

PetSerAl обеспечил решающую указатель в комментарии на вопрос:

$a.ConnectionStrings.Default="Server=5.6.7.8;User ID=hehe;Password=sheshe;Database=heshe;" 

То есть,

  • вместо того, чтобы пытаться присвоить JSON-подобный фрагмент '"Default": "Server=..."' до верхнего уровня $a.ConnectionStrings объект в попытке обновить вложенный объект Default,

  • a ssign значение "Server=..." для свойства $a.ConnectionStrings.Default, полагаясь на то, что ConvertFrom-Json правильно отобразил входной JSON вложенный пользовательский объект в PowerShell.


Ваша собственная попытка привела к вложенному объекту, хранящемуся в $a.ConnectionStrings получения заменено строкового литерал ("Default": "Server=..."), чьих встроенных" символов. позже понадобилось \ -открытие в процессе переконвертирования в JSON через ConvertTo-Json.

Смежные вопросы