Если вы подготовите объект (используя HashTable
или PSCustomObject
), переменные (начиная с $
, включая $var1
, $inner_json
) все равно будут автоматически расширены.
Я думаю, что вы хотите сделать это:
$link = "http://www.google.de"
$event = @{
var1 = 'sys'
var2 = 'yadda'
inner_json = @{
System = @{
link = $link
}
}
}
$event | ConvertTo-Json
{
"inner_json": {
"System": {
"link": "http://www.google.de"
}
},
"var2": "yadda",
"var1": "sys"
}
На основе добавленного ожидания:
* Примечание:
Двойные кавычки автоматически экранируются с помощью обратного слэса sh (\
) в json.
Чтобы избежать двойных кавычек в PowerShell, используйте обратную черту: (`
)
$link = "http://www.google.de"
$event = @{
var1 = 'sys'
var2 = 'yadda'
inner_json = "{`"System`": {`"link`":`"$Link`"}}"
}
$event | ConvertTo-Json
{
"inner_json": "{\"System\": {\"link\":\"http://www.google.de\"}}",
"var2": "yadda",
"var1": "sys"
}
Но лучше не создавать строку Json ( включая внутреннюю Json строку), а также создать внутреннюю Json из объекта и буквально внедрить эту строку во внешнюю Json:
$link = "http://www.google.de"
$event = @{
var1 = 'sys'
var2 = 'yadda'
inner_json = @{System = @{link = $Link}} | ConvertTo-Json -Compress
}
$event | ConvertTo-Json
{
"inner_json": "{\"System\":{\"link\":\"http://www.google.de\"}}",
"var2": "yadda",
"var1": "sys"
}