JSON.NET 双重序列化难题
使用 JSON.NET 序列化对象时,可能会遇到一个奇怪的问题:对象被双重序列化。这会导致响应中 JSON 数据被双引号包裹,嵌入的引号也被转义。
根本原因
问题根源在于序列化方法。如果您像示例中那样使用 JsonConvert.SerializeObject(instance)
,则会对对象进行两次序列化。这是因为您首先将其序列化为字符串,然后 API 控制器将其进一步序列化为 JavaScript 字符串字面量。
解决方案
要解决此问题,只需直接返回对象:
public IEnumerable GetFoobars()
{
var foobars = ...;
return foobars;
}
替代方法
或者,您可以选择将自定义转换器直接添加到 Web API 的默认 HttpConfiguration
中:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());
其他提示
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3