Как избежать json с одинарными кавычками, запущенного в PowerShell

#json #powershell

Вопрос:

Мне нужно создать тело, как показано ниже, но одинарная кавычка вокруг ABC вызывает синтаксическую ошибку при запуске в PowerShell.

     $Body = '{
    “Tag”:"Reference='ABC'"
    }'

    Write-Host -Message "$Body"
 

Я попробовал следующее решение:

     $MyVar = 'BRO001023'

    $Body = '{
    “Tag”:"Reference=$MyVar"
    }'

    Write-Host -Message "$Body"

 

НО я получил результат, как показано ниже.

     {
    “Filter”:"Reference=$MyVar"
    }
 

Как я могу сделать так, чтобы это выглядело так { “TagFilter”:"Reference='ABC'" }

Ответ №1:

Вы можете либо использовать дословную/заключенную в одинарные кавычки здесь строку:

 $Body = @'
{
    "Tag":"Reference='ABC'"
}
'@
 

Или избежать всех встроенных ' , удвоив их:

 $Body = '{
    "Tag":"Reference=''ABC''"
}'
 

Дополнительные сведения о правилах цитирования для различных строковых литералов см. в разделе about_Quoting_Rules справки

Комментарии:

1. Спасибо. Проблема решается в соответствии с рекомендациями.