Добавление строки в дословный строковый литерал

Я пытаюсь построить сырье json Строка, как показано ниже, чтобы отправить его в запросе http

var requestContent = @"{
                    ""name"": ""somename"",
                    ""address"": ""someaddress""
}";

Вместо того, чтобы иметь имя и адрес в жестком коде, я надеялся предоставить их из переменных ниже

string name = "someName";
string address = "someAddress";

Но ниже не работает. Любая идея?

var requestContent = @"{
                        ""name"": \" + name \",
                        ""address"": \" + address \"
    }";

3 ответа

Решение

Правильный синтаксис:

var requestContent = @"{
    ""name"": """ + name + @""",
    ""address"": """ + address + @"""
}";

Или вы можете использовать string.Format:

var requestContent = string.Format(@"{
    ""name"": ""{0}"",
    ""address"": ""{1}""
}", name, address);

Или вы можете использовать настоящий сериализатор JSON.

Вы также можете использовать дословную строку вместе с интерполяцией:

var requestContent = $@"{{
    ""name"": ""{name}"",
    ""address"": ""{address}""
}}";

РЕДАКТИРОВАТЬ: Чтобы это работало, вы должны убедиться, что фигурные скобки, которые вы хотите в выводе, удваиваются (как в кавычках). Также сначала $, затем @,

Вместо этого используйте Newtonsoft.JSON JObject() лайк

dynamic myType = new JObject();
myType.name = "Elbow Grease";
myType.address = "someaddress";

Console.WriteLine(myType.ToString());

Будет генерировать строку JSON как

 {
  "name": "Elbow Grease",
  "address": "someaddress"
 }
Другие вопросы по тегам