Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在一个信号rest api中包含字符串列表或字符串数组;包括“玩家ID”;参数_C#_Arrays_Onesignal - Fatal编程技术网

C# 如何在一个信号rest api中包含字符串列表或字符串数组;包括“玩家ID”;参数

C# 如何在一个信号rest api中包含字符串列表或字符串数组;包括“玩家ID”;参数,c#,arrays,onesignal,C#,Arrays,Onesignal,我使用的是one signals push通知rest api系统,我很难理解这些参数是如何工作的。我将提供一个示例,但仅限于硬编码数据。一个信号支持团队绝不支持。我已经有一个字符串列表'listIds'和一个字符串[]'arrayIds',我想在“include_player_id”参数中包含其中一个 下面是一个信号的示例代码 byte[] byteArray = Encoding.UTF8.GetBytes("{" +

我使用的是one signals push通知rest api系统,我很难理解这些参数是如何工作的。我将提供一个示例,但仅限于硬编码数据。一个信号支持团队绝不支持。我已经有一个字符串列表'listIds'和一个字符串[]'arrayIds',我想在“include_player_id”参数中包含其中一个

下面是一个信号的示例代码

byte[] byteArray = Encoding.UTF8.GetBytes("{"
                                    + "\"app_id\": \"5eb5a37e-b458-11e3-ac11-000c2940e62c\","
                                    + "\"contents\": {\"en\": \"English Message\"},"
                                    + "\"include_player_ids\": [\"6392d91a-b206-4b7b-a620-cd68e32c3a76\",\"76ece62b-bcfe-468c-8a78-839aeaa8c5fa\",\"8e0f21fa-9a5a-4ae7-a9a6-ca1f24294b86\"]}");
我试着用下面的几行替换最后一行,但是没有效果。我无法理解byte[]和这些反斜杠是如何工作的

+ "\"include_player_ids\": " + guestDevicesList + "}");
+ "\"include_player_ids\": " + arrayIds + "}");

通过提供硬编码值,代码可以正常工作。我需要一些帮助来用字符串列表或字符串[]替换硬编码的值。

您使用byteArray是因为您使用的是
System.Net.WebClient()

我建议改用
HttpClient
。您可以改为使用字符串上传


如果您确实需要字节数组,请尝试使用
Encoding.ASCII.GetBytes()
来代替
ASCII字符
,而不仅仅是
UTF8

,我起初以为它是JSON格式,但显然不是

  var list = new string[]
  {
    "6392d91a-b206-4b7b-a620-cd68e32c3a76",
    "76ece62b-bcfe-468c-8a78-839aeaa8c5fa",
    "8e0f21fa-9a5a-4ae7-a9a6-ca1f24294b86"
  };

  var listQuoted = list.Select(i => $"\"{i}\"");
  var commaSeparated = string.Join(",", listQuoted);
  var finalString = $"[{commaSeparated}]";

我之所以使用它,是因为这个例子就是这么用的。您还可以使用HttpClient设置参数吗?对不起,这段代码是做什么的?我知道连接用逗号连接字符串,最后一行是最终输出,但是“var listQuoted=list.Select(I=>$”\“{I}\”;“做什么呢?这是用(双)引号包围原始列表中每个项目的一种方法。像这样添加“finalString”会使技巧“\”包括“\u player\u id\”:“+finalString+”);