鉴于代码:
dynamic foo = new ExpandoObject();
foo.Bar = "something";
string json = Newtonsoft.Json.JsonConvert.SerializeObject(foo);
Run Code Online (Sandbox Code Playgroud)
输出如下:
"{\"Bar\":\"something\"}"
Run Code Online (Sandbox Code Playgroud)
在调试大型json文档时,很难阅读 - 使用Newtonsoft.Json的内置功能(不是正则表达式或可能破坏事物的黑客)有没有办法使输出成为一个带有valie的字符串:
{Bar: "something"}
Run Code Online (Sandbox Code Playgroud) 我的问题是:
这是从我的WebAPI控制器发回的响应.
"[
   [
      {\"id\":\"identifier\"},
      {\"name\":\"foobar\"}
   ]
]"
Run Code Online (Sandbox Code Playgroud)
请注意,响应包含在引号中,并且所有嵌入的引用都被转义.这显然是个问题.我可以为JSON.NET Serializer提供任何设置以防止这种情况发生吗?
正如pswg在他的回答中猜到的那样,我正在使用JSON.NET
JsonConvert.SerializeObject(instance)
Run Code Online (Sandbox Code Playgroud)
执行我的序列化.
我这样做是因为当我构建我的自定义转换器时,我将它们包含在我的WepApiConfig中的JsonConvert.DefaultSettings中(我显然认为这不是问题)
我之前尝试将我的HttpGets的返回类型交换为"我的对象类型",响应是我对象的ToString()方法的json表示...这让我知道序列化没有通过我的转换器.
将我的HttpGets的返回类型从字符串更改为"我的对象类型"并将这些转换器直接插入到WebAPi的默认HttpConfiguration中就可以了.
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());
Run Code Online (Sandbox Code Playgroud)
十分简单.