奇怪的System.Format例外

我只是尝试为我的unit testing构建一个json字符串,并且意外地下面的代码返回系统格式exception。 错误消息表明它正在尝试解析日期,这对我来说很奇怪。 我不是要求解析日期。

class Program { static void Main(string[] args) { Console.WriteLine(GetJson()); Console.ReadKey(); } static string GetJson(string dateStr = "", string lta = "5.25") { return String.Format("[{\"dateBooking\":\"{0}\",\"lta\":\"{1}\"}]", dateStr, lta); } } 

它可以很容易地重现,但我添加了exception细节:“mscorlib.dll中发生了’System.FormatException’类型的未处理exception

附加信息:输入字符串的格式不正确。“

你需要转义{ with {{} with }}因为String.Format会搜索{0:000}类的参数,而是找到{"dateBooking ... }这是无效的参数格式。这就是为什么一个FormatException引发。

 return String.Format("[{{\"dateBooking\":\"{0}\",\"lta\":\"{1}\"}}]", dateStr, lta);