我有一个很长的JSON字符串,它自然包含许多大括号。我使用两个打开和关闭括号来逃避大括号(就像在stackoverflow上的一些先前帖子中的建议一样)。我仍然得到错误:
System.FormatException:输入字符串的格式不正确。
这是一个缩短的例子:
var json = string.Format($@"{{""{data.GraphId}""}}");
格式的工作原理有何变化? 现在逃避大括号的正确方法是什么?
答案 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打交道,你应该只使用一个库,而不是试图自己格式化它。