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

C# 解析作为exe C的进程开始信息参数提供的json字符串#,c#,process,arguments,C#,Process,Arguments,嗨,我有一个应用程序,我需要从另一个exe执行。当我作为命令行参数传递时,相同的json字符串可以正常工作;但当我将其作为进程开始信息参数传递时失败 命令行参数: 输入(即参数[0]):“{\“mydllpath\”:\“D:\\dll\”,“FilePath\”:\“D:\\Input\\abc.doc\”,“Attribute\”:“word\”} Console.Writeline:{“mydllpath”:“D:\\dll”,“文件路径”:“D:\\Input\\abc.doc”,“属性

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

命令行参数:

输入(即参数[0]):
“{\“mydllpath\”:\“D:\\dll\”,“FilePath\”:\“D:\\Input\\abc.doc\”,“Attribute\”:“word\”}

Console.Writeline:
{“mydllpath”:“D:\\dll”,“文件路径”:“D:\\Input\\abc.doc”,“属性”:“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;

传递的参数未正确转义

它应该被正确地逃脱

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

参考

包括用于进行流程调用的代码。为了澄清,上面的JSON在代码中,为什么要转义路径中的斜杠?它给出的错误没有转义sequenceError!!“错误的JSON转义序列”@sina123好吧,我会删除我的注释并更新答案,这样你们就能明白我的意思了。它仍然会在VS中给出错误“无法识别的转义序列”editor@sina123当您提到VS编辑器错误时,您是指运行时错误还是语法错误?这应该更像是一种语法error@sina123请看下面的文档