概要
Webアプリからローカルの.exe
ファイルを呼び出すとき,そのコマンドライン引数としてJSONを与えたかった.そのとき,PowerShellとコマンドプロンプトではエスケープの挙動が違った.与えるJSONサンプルは以下の通り.
{
"name": "Alice",
"age": 25,
"city": "London"
}
PowerShell
シングルクォーテーション'
で全体を囲んで,"
は\
でエスケープ
.\app.exe '{\"name\":\"Alice\",\"age\":25,\"city\":\"London\"}'
以下の1行目のように,ダブルクォーテーションでエスケープするとき,JSONデータ中に一つでも空白があればエスケープできるが,2行目のようにJSONデータ中に空白が無ければ正しくエスケープできない.
.\WinFormsApp4.exe '{""name"":""Alice"",""age"":25,""city"": ""London""}'
.\WinFormsApp4.exe '{""name"":""Alice"",""age"":25,""city"":""London""}'
少し調べてみたが,原因はよくわからなかった.
コマンドプロンプト
ダブルクォーテーション"
で全体を囲んで,"
は\
でエスケープ
app.exe "{\"name\":\"Alice\",\"age\":25,\"city\":\"London\"}"