Добавление строки в дословный строковый литерал
Я пытаюсь построить сырье 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"
}