一尘不染

Newtonsoft.Json无需转义反斜杠的SerializeObject

json

给定代码:

dynamic foo = new ExpandoObject();
foo.Bar = "something";
string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo);

输出如下:

"{\"Bar\":\"something\"}"

调试大型json文档时,很难读懂-
使用Newtonsoft.Json的内置功能(不是正则表达式或可能会破坏事情的hack),可以通过任何方式使输出字符串成为有效值:

{Bar: "something"}

阅读 1646

收藏
2020-07-27

共1个答案

一尘不染

查看json值时,在调试器中看到的是应该在C#文件中使用以获得相同值的字符串值。

确实可以替换

dynamic foo = new ExpandoObject();
foo.Bar = "something";
string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo);

string json = "{\"Bar\":\"something\"}";

而不更改程序的行为。

因此,要获得不同的值,您应该更改JsonConvert的工作方式,但是JsonConvert符合JSON标准,因此就算了!

如果您实际上并没有序列化ExpandoObject(也没有控制之外的任何其他密封类),则可以在json中序列化的类型上使用DebuggerDisplayAttribute,以定义对象在调试过程中的显示方式(在代码中,foo实例)。

但是字符串是字符串,VisualStudio是正确的:必须对双引号进行转义。

2020-07-27