Как я могу включить список строк или массив строк в один сигнал rest api "include_player_ids" параметр - PullRequest
0 голосов
/ 24 апреля 2019

Я использую систему api push-уведомлений с одним сигналом, и мне сложно понять, как работают параметры. Есть пример, который я приведу, но только с жестко закодированными данными Одна команда поддержки сигналов не поддерживает. У меня уже есть строка List '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\"]}");

Я попытался заменить последнюю строку следующими строками, но ни одна из них не работает. Я не могу понять, как работает byte [] и эти зазоры.

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

Предоставляя жестко закодированные значения, код работает. Мне нужна помощь при замене жестко закодированных значений строкой List или строкой [].

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Сначала я думал, что это формат 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}]";
0 голосов
/ 24 апреля 2019

вы используете byteArray, потому что вы используете System.Net.WebClient()?

Я бы предложил использовать HttpClient вместо этого. Вы можете загрузить, используя строки вместо.

Если вам действительно нужен байтовый массив, попробуйте вместо этого использовать Encoding.ASCII.GetBytes(), чтобы использовать ASCII characters вместо UTF8.

...