C# 如何在一个信号rest api中包含字符串列表或字符串数组;包括“玩家ID”;参数
我使用的是one signals push通知rest api系统,我很难理解这些参数是如何工作的。我将提供一个示例,但仅限于硬编码数据。一个信号支持团队绝不支持。我已经有一个字符串列表'listIds'和一个字符串[]'arrayIds',我想在“include_player_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("{" +
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+”);