VS2015 C#string.Format在使用转义大括号时抛出错误

时间:2017-01-24 13:30:45

标签: c# visual-studio visual-studio-2015

我有一个很长的JSON字符串,它自然包含许多大括号。我使用两个打开和关闭括号来逃避大括号(就像在stackoverflow上的一些先前帖子中的建议一样)。我仍然得到错误:

  

System.FormatException:输入字符串的格式不正确。

这是一个缩短的例子:

var json = string.Format($@"{{""{data.GraphId}""}}");

格式的工作原理有何变化? 现在逃避大括号的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

字符串插值只是变成了对string.Format的调用。因此,传递给string.Format的字符串将从

更改
$@"{{""{data.GraphId}""}}"

类似于以下内容

string.Format(@"{{""{0}""}}", data.GraphId)

所以你的代码相当于

string.Format(string.Format(@"{{""{0}""}}", data.GrpahId));

内部string.Format完成后,看起来如下,假设data.GrpahId是5

string.Format(@"{""5""}");

现在你看到你以前用分隔的花括号不再分隔。解决方案是不在string.Format中使用插值字符串,或者如果由于某种原因你必须加倍花括号。

另一方面,如果你正在与Json打交道,你应该只使用一个库,而不是试图自己格式化它。