“如何写作”;“参数”;在C#中的JSON-RPC2.0中?

“如何写作”;“参数”;在C#中的JSON-RPC2.0中?,c#,json,json-rpc,C#,Json,Json Rpc,我想使用JSON-RPC来控制一个名为aria2的应用程序。当它不需要参数时,我可以控制它。但是我尝试了很多方法,我从未成功地用params控制它 我尝试过的一些代码如下所示: if (secret != null && secret != "") json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri",

我想使用JSON-RPC来控制一个名为aria2的应用程序。当它不需要参数时,我可以控制它。但是我尝试了很多方法,我从未成功地用params控制它

我尝试过的一些代码如下所示:

if (secret != null && secret != "")
    json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri", ["params"] = { "token:" + secret, "[http://csharp.org/file.zip]" } });
else
    json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri", ["params"] = @"[http://csharp.org/file.zip]" });
我还尝试:

if (secret != null && secret != "")
    string json = "{\"jsonrpc\": \"2.0\",\"method\": \"aria2.addUri\",\"params\": {\"token:\"" + secret + "\",\"http://csharp.org/file.zip\"},\"id\": \"m\"}";
else
    string json = "{\"jsonrpc\": \"2.0\",\"method\": \"aria2.addUri\",\"params\": {\"http://csharp.org/file.zip\"},\"id\": \"m\"}";
我用
[{'
尝试了许多组合和排列,但都不起作用

以下是关于aria2 for Python的RPC指南:


以下是一些初学者想知道的解决方案

首先,了解您想要输出的内容,在本例中是:

结果如下:


然后,小提示,
[]
在参数的值之外,因此它们是数组,而不是字符串。它不能使用
[“params”]={}
,也不能覆盖字符串到数组,例如,以下错误代码:

JsonConvert.SerializeObject(new JObject { ["params"] = "[\"token:secret\", [\"http://csharp.org/file.zip\"]]" });
仅获取:

{"params":"[\"token:secret\", [\"http://csharp.org/file.zip\"]]"}

最重要的是令牌的格式,它不是
JProperty()
JObject()
中,它只是params中的一个字符串
JArray()
。uri也在params的
JArray()
JArray()
中 正确的版本是:

  • JArray()
    []
    JObject()
    {}
    JArray()
    ≠ <代码>作业对象()

如果我们不需要
JsonConvert()
,那么正确的版本很简单:

  • 在这种情况下,我们不能将
    更改为
{"params":"[\"token:secret\", [\"http://csharp.org/file.zip\"]]"}
JArray param = new JArray { "token:secret", new JArray { "http://csharp.org/file.zip" } };
string json = JsonConvert.SerializeObject(new JObject { ["jsonrpc"] = "2.0", ["id"] = "m", ["method"] = "aria2.addUri", ["params"] = param });
string json = "{ \"jsonrpc\": \"2.0\", \"id\": \"m\", \"method\": \"aria2.addUri\", \"params\": [\"token:secret\", [\"http://csharp.org/file.zip\"]] }";