首页 > 解决方案 > 如何在一个信号rest api“include_player_ids”参数中包含字符串列表或字符串数​​组

问题描述

我正在使用一个信号推送通知休息 api 系统,但我无法理解参数的工作原理。我将提供一个示例,但仅提供硬编码数据。一个信号支持团队绝不是支持性的。我已经有一个字符串 List 'listIds' 和一个 string[] '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\"]}");

我尝试用以下几行替换最后一行,但没有任何效果。我无法理解 byte[] 和这些反弹是如何工作的。

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

提供硬编码值,代码就可以工作。在用字符串列表或字符串 [] 替换硬编码值时,我需要一些帮助。

标签: c#arraysonesignal

解决方案


起初我以为是 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}]";

推荐阅读