首页 > 解决方案 > C# String.Format 输入字符串格式不正确

问题描述

我收到一个异常“输入字符串的格式不正确”。我不明白为什么。我查看了文档,但这并没有给我任何想法。

       string body = string.Format(@"{
                          ""credentials"": {
                                        ""name"": ""{0}"",
                                        ""password"": ""{1}"",
                                        ""site"": {
                                        ""contentUrl"": ""{2}""
                                                  }
                                            }
                                }",Username, Password, siteName);

睡眠不足和旧代码......我正在反序列化响应但没有序列化请求‍♂️

标签: c#stringstring.format

解决方案


{}在格式字符串中具有特殊含义。如果您希望字符串从字面上包含它们,则必须通过将它们加倍来转义它们:

string body = string.Format(@"{{
 ""credentials"": {{
               ""name"": ""{0}"",
               ""password"": ""{1}"",
               ""site"": {{
               ""contentUrl"": ""{2}""
                         }}
                   }}
       }}", Username, Password, siteName);

或者,正如@mjwills 所建议的,您可以创建一个匿名对象并将其序列化为 JSON:

var obj = new { name = Username, password = Password, site = new { contentUrl = siteName }};
string body = new JavaScriptSerializer().Serialize(obj);

推荐阅读