Я сделал шаблон с помощью конструктора блоков Slack.
Я читаю некоторые данные и заполняю восемь параметров
в моем коде C# я должен использовать интерполированную строку и фигурные скобки для предоставления параметров {}. Мне также нужно пропустить фигурные скобки, добавив их дважды.
но это не распознается как правильный json, когда я делаю вызов почтового сообщения:
var data = new NameValueCollection();
data["token"] = token;
data["channel"] = channelName;
data["as_user"] = "true";
data["text"] = postedMessage;
data["blocks"]=jsonstring;
var client = new WebClient();
var response = client.UploadValues("https://slack.co/api/chat.postMessage", "POST", data);
string responseInString = Encoding.UTF8.GetString(response);
Console.WriteLine(responseInString);
Я понимаю, что правильный способ - представить эти блоки как классы. Я пытался следовать слабому представлению вложения, но блоки более сложны и содержат внутренние объекты, а не строковые переменные, как класс вложения. Благодарим вас за поддержку в представлении блоков с использованием простого синтаксиса и правильного json.
Да, это возможно. Но это может быть сложно, потому что вам нужно будет экранировать некоторые символы в формате JSON, чтобы это работало, например. специальные символы в UTF-8
см. официальную документацию о том, как это работает для JSON: json.org





Причина, по которой ваш код не работает, заключается в том, что в С# одинарные кавычки работают только для одиночных символов. Вот как правильно экранировать двойные кавычки и фигурные скобки JSON для жестко закодированных строковых констант.
Чтобы правильно избежать жестко запрограммированного JSON внутри вашего кода, вам нужно добавить обратную косую черту ко всем без исключения двойным кавычкам вашей строки JSON.
Пример:
string someJson = "{\"ErrorMessage\": \"\",\"ErrorDetails\": {\"ErrorID\": 111,\"Description\":{\"Short\": 0,\"Verbose\": 20},\"ErrorDate\": \"\"}}";
Есть и другие способы, как это сделать. См. этот вопрос для полного обзора решений.
Кстати. при таком подходе вам не нужно экранировать фигурные скобки.
С интерполированной строкой вам также нужно избегать двойных кавычек. Но здесь это работает, удваивая их.
Пример:
string someJson = "{\"ErrorMessage\": \"\",\"ErrorDetails\": {\"ErrorID\": 111,\"Description\":{\"Short\": 0,\"Verbose\": 20},\"ErrorDate\": \"\"}}";
Для интерполированных строк вам также потребуется экранировать фигурные скобки. Это работает путем удвоения экранированных фигурных скобок, поскольку одинарные фигурные скобки используются для интерполяции.
Пример:
var json = $@"{{""name"":""{name}""}}";
См. также этот ответ для полного обсуждения того, как экранировать фигурные скобки.
Я добавлю обратную косую черту к каждой двойной кавычке, но как мне управлять фигурными скобками интерполяции? Строка someJson =$ "" \attribute:\"{variable1} "
но если вам нужно, вы также можете избежать фигурных скобок внутри интерполированной строки. Позвольте мне добавить к ответу.
Это сработало. Вы не представляете, как я ценю вашу поддержку. Возможно, мне нужно переписать вопрос, чтобы лучше решить проблему. большое спасибо, правда
Хорошо, я перейду к примеру. Но смогу ли я включать переменные в свою строку json для заполнения параметров?