C# 将变量传递到JSON请求体的逐字字符串文本中

C# 将变量传递到JSON请求体的逐字字符串文本中,c#,json,C#,Json,对于C#来说相当陌生,我正在尝试使用逐字字符串文本构建一个干净的多行字符串,但也尝试向它传递变量 说它的格式不正确,所以看到我在这里做错了什么,因为这个格式和我在其他so问题中看到的格式很接近 var bodyJson =string.Format(@"{ ""ConsultingProject@odata.bind"": ""/consultingprojectses({0})"",

对于C#来说相当陌生,我正在尝试使用逐字字符串文本构建一个干净的多行字符串,但也尝试向它传递变量

说它的格式不正确,所以看到我在这里做错了什么,因为这个格式和我在其他so问题中看到的格式很接近

  var bodyJson =string.Format(@"{
                                  ""ConsultingProject@odata.bind"": ""/consultingprojectses({0})"",
                                  ""buyer_product_id@odata.bind"": ""products(f4b6b505-99df-e711-8108-c4346bdc3201)"",
                                  ""BuyerLookupId@odata.bind"": ""/contacts({1})"",
                                  ""new_buyer_account_id@odata.bind"": ""/accounts({2})""
                                }", projectRecord.consultingprojectsid, contact, projectRecord.account_value);
或者最好是:

  var bodyJson =string.Format(@"{
                                  'ConsultingProject@odata.bind': '/consultingprojectses({0})',
                                  'buyer_product_id@odata.bind': 'products(f4b6b505-99df-e711-8108-c4346bdc3201)',
                                  'BuyerLookupId@odata.bind': '/contacts({1})',
                                  'tnew_buyer_account_id@odata.bind': '/accounts({2})'
                                }", projectRecord.consultingprojectsid, contact, projectRecord.account_value);

创建一个对象并使用序列化程序构造Json:

var obj = new
            {
                Key1 = "value1",
                Key2 = "value2"
            };

var json = JsonConvert.SerializeObject(obj);

JSON是来自模型或对象的序列化数据;不要用一个特殊的字符串来组合一个特殊的字符串,而要使用一个序列化,你必须转义
{
}
。请不要这样做。创建一个对象并使用序列化程序!您可能想考虑使用<代码> JObject <代码>来创建必要的结构和值,而不是试图逃避和所有这些;例如,从技术上讲,JSON是无效的,因为字符串必须使用双引号,而不是单引号。为什么不试着通过放置一些像
bodyJson.replace(“{0}”,“myvalue”)