解析作为exe C#的进程启动信息参数提供的json字符串

时间:2018-09-18 13:57:06

标签: c# process arguments

嗨,我有一个需要从另一个exe执行的应用程序。当我作为命令行参数传递时,相同的json字符串可以正常工作;但是当我将其作为“流程开始信息”参数传递时失败。

命令行参数:

输入(即args [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 :(得分:0)

传递的参数未正确转义

应该正确地转义

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

引用ProcessStartInfo.Arguments Property