Разобрать строку json, предоставленную в качестве аргумента Информация о запуске процесса для exe C # - PullRequest
0 голосов
/ 18 сентября 2018

Привет, у меня есть приложение, которое мне нужно выполнить из другого exe.Та же самая строка json отлично работает, когда я передаю аргументы командной строки;но терпит неудачу, когда я передаю его в качестве аргумента Информация о запуске процесса.

аргументы командной строки:

Ввод (т.е. аргументы [0]): "{\"mydllpath\":\"D:\\dll\",\"FilePath\":\"D:\\Input\\abc.doc\", \"Attribute\":\"word\"}"

Console.Writeline:{"mydllpath":"D:\\dll","FilePath":"D:\\Input\\abc.doc", "Attribute":"word"}

Успешный анализ

Аргументы информации о запуске процесса:

Ввод: "{\"mydllpath\":\"D:\\dll\",\"FilePath\":\"D:\\Input\\abc.doc\", \"Attribute\":\"word\"}"

Console.Writeline: {"mydllpath":"D:\dll","FilePath":"D:\Input\abc.doc", "Attribute":"word"}

Сбой при разборе: при синтаксическом анализе обнаружен неожиданный символ: D.

ProcessStartInfo psi = new ProcessStartInfo("D:\\ETS\\AE\\bin\\Debug\\AE.exe");
string json = "{\"mydllpath\":\"D:\\dll\",\"FilePath\":\"D:\\Input\\abc.doc\", \"Attribute\":\"word\"}";
psi.Arguments = json;
Process p = new Process();
Debug.WriteLine(psi.FileName + " " + psi.Arguments);
p.Start();
p.StartInfo = psi;

1 Ответ

0 голосов
/ 18 сентября 2018

Переданные аргументы не экранированы должным образом

должны быть экранированы правильно

var jsonString = "{\"mydllpath\":\"D:\dll\",\"FilePath\":\"D:\Input\abc.doc\", \"Attribute\":\"word\"}";
var args = string.Format("\"\"\"{0}\"\"\"", jsonString);
psi.Arguments = args;
//...

Ссылка ProcessStartInfo.Arguments Свойство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...