如何在一个信号 rest api "include_player_ids" 参数中包含字符串列表或字符串数​​组

How can I include a list of strings or an array of strings in one signals rest api "include_player_ids" parameter

我正在使用一个信号推送通知休息 api 系统,但我无法理解参数的工作原理。我将提供一个示例,但仅提供硬编码数据。一个信号支持团队绝不提供支持。我已经有一个字符串列表 'listIds' 和一个字符串 [] 'arrayIds',我想在 "include_player_ids" 参数中包含一个或另一个。

这是一个信号的示例代码

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\"]}");

我尝试用以下几行替换最后一行,但 none 行得通。我无法理解 byte[] 和这些反冲是如何工作的。

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

提供硬编码值,代码有效。我需要一些帮助来用字符串列表或字符串 [].

替换硬编码值

您使用 byteArray 是因为您正在使用 System.Net.WebClient() 吗?

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

如果您确实需要字节数组,请尝试使用 Encoding.ASCII.GetBytes() 而不是使用 ASCII characters 而不是仅使用 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}]";