2016-08-24 5 views
0

Я пытаюсь построить сырой json строку, как показано ниже, чтобы отправить его в запросе HTTPДобавление строки стенографических строковый литерал

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

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

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

Но нижеследующее не работает. Есть идеи ?

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

Почему бы не использовать сериализатор JSON? – Scott

ответ

5

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

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

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

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

Или вы могли бы использовать фактический JSON сериализатор.

2

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

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

Console.WriteLine(myType.ToString()); 

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

{ 
    "name": "Elbow Grease", 
    "address": "someaddress" 
} 
3

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

var requestContent = [email protected]"{{ 
    ""name"": ""{name}"", 
    ""address"": ""{address}"" 
}}"; 

EDIT: Для этого чтобы работать, вы должны убедиться, что фигурные скобки, которые вы хотите на выходе, удвоился (как и котировки). Также, сначала $, затем @.

Смежные вопросы