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

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

我有一个很长的 JSON 字符串,它自然包含很多大括号。我使用两个左括号和右括号对每个大括号进行了转义(正如之前关于 stackoverflow 的一些帖子中的建议)。我仍然收到错误:

System.FormatException : Input string was not in a correct format.

这是一个简短的例子:

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

格式的工作方式有什么变化吗? 现在转义大括号的正确方法是什么?

最佳答案

字符串插值只是变成了对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,您应该只使用一个库而不是尝试自己格式化它。

关于c# - VS2015 C# string.Format 在使用转义大括号时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41829524/

相关文章:

c# - 我如何使用后面的 C# 代码中的参数调用存储过程

c# - 是否可以在公共(public)字段 block 中的字段前每次不写 `public`?

c# - 将 C# 代码与 roslyn : comment disappears 合并

visual-studio - VSIX 包构建失败但未显示原因(Visual Studio 错误)

c++ - 错误 C1001 : An internal error has occurred in the compiler

C#:如何用\替换\\

visual-studio - 更改 Visual Studio 编辑器中的 '*' 符号

c# - 为什么 System.Windows.Forms.Control 没有标记为可序列化?

c# - 双重 TryParse 混淆

sql-server - 使用最新版本的 SSDT SqlPackage.exe 部署 SQL Server dacpac 会删除列默认值