将字符串添加到逐字字符串文字

Fra*_* Q. 0 c# json string-literals verbatim-string

我正在尝试构建一个json如下的原始字符串,以便在http请求中发送它

var requestContent = @"{
                    ""name"": ""somename"",
                    ""address"": ""someaddress""
}";
Run Code Online (Sandbox Code Playgroud)

我没有硬编码的名称和地址值,而是希望从下面的变量中提供它们

string name = "someName";
string address = "someAddress";
Run Code Online (Sandbox Code Playgroud)

但是下面的方法不起作用.任何的想法 ?

var requestContent = @"{
                        ""name"": \" + name \",
                        ""address"": \" + address \"
    }";
Run Code Online (Sandbox Code Playgroud)

Blo*_*ard 7

正确的语法是:

var requestContent = @"{
    ""name"": """ + name + @""",
    ""address"": """ + address + @"""
}";
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用string.Format:

var requestContent = string.Format(@"{
    ""name"": ""{0}"",
    ""address"": ""{1}""
}", name, address);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用实际的JSON序列化程序.


Ken*_*eth 5

您也可以将逐字字符串与插值一起使用:

var requestContent = $@"{{
    ""name"": ""{name}"",
    ""address"": ""{address}""
}}";
Run Code Online (Sandbox Code Playgroud)

编辑:为此,您必须确保输出中所需的花括号加倍(就像引号一样)。此外,首先$,然后@