JSON.NET 双重序列化难题
使用 JSON.NET 序列化对象时,可能会遇到一个奇怪的问题:对象被双重序列化。这会导致响应中 JSON 数据被双引号包裹,嵌入的引号也被转义。
根本原因
问题根源在于序列化方法。如果您像示例中那样使用 JsonConvert.SerializeObject(instance)
,则会对对象进行两次序列化。这是因为您首先将其序列化为字符串,然后 API 控制器将其进一步序列化为 JavaScript 字符串字面量。
解决方案
要解决此问题,只需直接返回对象:
<code class="language-csharp">public IEnumerable<foobar> GetFoobars() { var foobars = ...; return foobars; }</code>
替代方法
或者,您可以选择将自定义转换器直接添加到 Web API 的默认 HttpConfiguration
中:
<code class="language-csharp">config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());</code>
其他提示
以上是为什么 JSON.NET 对我的对象进行双重序列化?的详细内容。更多信息请关注PHP中文网其他相关文章!