将JSON传递到EXE文件会产生“ newtonsoft.Json.JsonReaderException:'在解析值时遇到意外字符”

时间:2019-02-14 10:54:18

标签: c# json

我有一个exe文件,该文件可以通过另一种方法来启动参数。

我的exe文件的主要方法在我的program类中,该类如下:

static void Main(String[] args)
    {

        Application.Run(new PAMain(args[0])); //args[0] is the parameter

    } 

我通过调用args [0](这是JSON数据)来获取发送的参数。

注意另一个类new PAMain,我将这个args [0]传递给它的构造函数,如下所示:

    public PAMain(string json)
    {
        InitializeComponent();       

        SetJsonData(json);          

    }

SetJsonData()方法反序列化json字符串,这是发生错误的地方,SetJsonData()方法如下所示:

string jsonData;
private AsanaRootData root = new AsanaRootData();

public string SetJsonData(string json)
{
   this.jsonData = json;          

   root = JsonConvert.DeserializeObject<AsanaRootData>(jsonData);  //The error happens here          

   return json;
}

错误发生在"root =..."。 我得到的错误是newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value ... at line ...

如果我在原始JSON数据上调用SetJsonData()方法,而不是exe传递了该方法,则一切正常。所以我认为错误本身就是在将JSON数据传递到exe文件并调用args [0]之后,数据不再是JSON了吗?

这是我的GUI中的错误弹出窗口:

enter image description here

错误发生在assignee_status:l符号later

1 个答案:

答案 0 :(得分:0)

问题在逃避,我改用这种方式启动exe文件来解决它

ProcessStartInfo info = new ProcessStartInfo
{
   Arguments = "\"" + jsonData.Replace("\"", "\\\"") + "\"",
   FileName = "path"
}; 

Process.Start(info);

我在这里找到它:How do I start a .exe with a json string as parameter correctly?